我的CSV数据看起来像这样->
Header1 Header2
Key100 Value100
Key200 Value200
它只有两列,头作为第一行。列是键和各自的值。现在,我的要求是-
- 我要存储密钥&值为字符串数据类型
- 存储 时需要排除Header(第一行)
- 需要排除null或";键
- 是一个','分隔的数据
- 文字"Data:"> :
例如-对于上面提供的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