awk csv到Redis

ddhy6vgd  于 2023-05-20  发布在  Redis
关注(0)|答案(1)|浏览(188)

我正在向Redis注入一个csv文件。
如果我在终端上运行脚本,我会得到一个JSON格式,但我不知道如何插入到Redis中。我尝试在开始时使用SET,在结束时使用| redis-cli --pipe
它在终端上工作

awk -F, ' BEGIN { print "[" ; }  { print " {\n" "   \"typeDocument\" : \""   $1  "\",\n"  "   \"numberDocument\" : \""  $2 "\",\n"  "   \"phone\" : \""  $3  "\",\n"  "   \"state\" : \""  $4  "\"\n" " }" }   END { print "]" } ' data.csv #FUNCIONA

这行不通

awk -F, ' BEGIN { print "SET" "[ ; {\n" "   \"typeDocument\" : \""   $1  "\",\n"  "   \"numberDocument\" : \""  $2 "\",\n"  "   \"phone\" : \""  $3  "\",\n"  "   \"state\" : \""  $4  "\"\n" " }" }   END { print "]" } ' data.csv | redis-cli --pipe #NOFUNCIONA

请帮帮我
我希望在Redis中插入csv文件中的数据时,字段将以JSON格式正确显示。

iq3niunx

iq3niunx1#

命令的输出包含换行符(\n)字符,因为您自己使用它,并且使用多个print。如果SET的值包含换行符,则必须遵守String quoting and escaping,这给出了以下示例

127.0.0.1:6379> SET mykey "Hello\nWorld"
OK
127.0.0.1:6379> GET mykey
Hello
World

观察"定界值,并且有两个字符:黑色斜杠和字母n,而不是单个换行符。您还需要以相同的方式转义",以防止它们被视为分隔符。考虑一下,如果你说有下面的JSON文件

{"Able":1,
"Baker":2,
"Charlie":3}

则应导致以下SET命令

SET mykey "{\"Able\":1,\n\"Baker\":2,\n\"Charlie\":3}"

相关问题