如何使用 Redis-cli 命令将 CSV 数据批量插入 Redis 持久性系统?

how to Redis-cli command to mass insert CSV data into Redis persistence system?

我的 CSV 数据看起来像这样 ->

    Header1   Header2
    Key100    Value100
    Key200    Value200

它只有两列,第一行是 Header。列是键和各自的值。 现在,我的要求是 -

  1. 我想将键和值存储为字符串数据类型
  2. 存储时需要排除Header(第一行)
  3. 需要排除空键或“”键
  4. 是','分隔的数据
  5. 插入时应将单词“数据:”附加到每个键。

例如 - 对于上面提供的 csv 数据,redis 应该存储为 -

Data:Key100
Data:Key200

结果:

当我执行 get Data:Key100 时,我的输出应该是:"Value100"

已尝试使用 awk 命令,但它一直出现错误 - 指定的流 ID 无效

awk -F ',' 'FNR > 1 {print "XADD myStream \""(=="" ? "NA" : )" column_1 "(=="" ? "NA" : )" column_2 ... \n"}' data.csv | redis-cli --pipe

请帮我获取命令。谢谢

我想你是这个意思,它为文件的每一行设置一个单独的键值,但我不确定你为什么似乎在尝试使用流:

awk -F ',' 'FNR>1 { if(!){="NA"}; if(!){="NA"}; printf("SET %s %s\n",,)}'  data.csv | redis-cli --pipe

对于此文件(第 3 行缺少键,第 5 行缺少值):

Header1,Header2
Key100,Value100
,fred
Key200,Value200
bill,

生成此代码:

SET Key100 Value100
SET NA fred
SET Key200 Value200
SET bill NA

然后您可以这样做:

redis-cli get Key100
"Value100"

另外,你说你想排除空键,但你的代码用 "NA" 替换它们并设置它们,所以你可能更愿意完全忽略它们:

awk -F ',' 'FNR > 1 &&  &&  {printf("SET %s %s\n",,)}'  data.csv 

产生:

SET Key100 Value100
SET Key200 Value200