我想将slave上的Redis数据子集导出到csv文件。我注意到redis-cli中添加了一个新的csv输出选项,但我无法找到它的工作原理。启用该选项会以csv格式将命令输出打印到屏幕。将此文件转换为csv文件的最佳方法是什么?
答案 0 :(得分:29)
前沿!
我刚看了source code&它所做的就是将命令作为逗号分隔值输出到stdout。这并不奇怪。
所以,只要您在Linux上,就可以将其重定向到standard way中的文件?
e.g ./
redis-cli --csv your-command > stdout.csv 2> stderr.txt
答案 1 :(得分:0)
转到src
redis目录并运行以下命令
./redis-cli $command > $file_name
例如:./redis-cli SMEMBERS "$KEY" > $file_name(RANDOM NAME)
这对我有用。
答案 2 :(得分:0)
对于套接字和/或多个redis服务器,您需要执行以下操作:
redis-cli -s /path/to/socket --csv your-command > stdout.csv 2> stderr.txt
E.g。
redis-cli -s /var/run/redis/redis4.sock --csv lrange my_list 0 -1 > stdout.csv 2> stderr.txt
答案 3 :(得分:0)
命令:
redis-cli --csv hgetall mykey > stdout.csv
创建了一个CSV文件,例如:
"id","value","id","value", ...
为了让生活更轻松,我使用了
sed -i 's/\([^\",]*",[^,]*\),/\1\n/g' stdout.csv
将输出转换为:
"id", "value"
"id", "value"
"id", "value"
...
答案 4 :(得分:0)
如果您不需要像--csv
那样用引号将值引起来,则原始输出就足够了,您只需要每两行用逗号连接即可获得CSV:
redis-cli <your redis command> | paste -d "," - - > out.csv