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



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

Header1   Header2
Key100    Value100
Key200    Value200

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

  1. 我要存储密钥&值为字符串数据类型
  2. 存储
  3. 时需要排除Header(第一行)
  4. 需要排除null或";键
  5. 是一个','分隔的数据
  6. 文字"Data:">
  7. :

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

Data:Key100
Data:Key200

结果:

当我做get Data:Key100时我的输出应该是:"Value100"

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

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

请帮我拿到命令。谢谢你

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

awk -F ',' 'FNR>1 { if(!$1){$1="NA"}; if(!$2){$2="NA"}; printf("SET %s %sn",$1,$2)}'  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 && $1 && $2 {printf("SET %s %sn",$1,$2)}'  data.csv 

生产:

SET Key100 Value100
SET Key200 Value200

最新更新