21

我想将我在从属服务器上的 Redis 数据的一个子集导出到一个 csv 文件。我注意到 redis-cli 中添加了一个新的 csv 输出选项,但我无法找到它如何工作的文档。启用该选项会将命令输出以 csv 格式打印到屏幕。将其转换为 csv 文件的最佳方法是什么?

4

5 回答 5

35

前沿!

我刚刚查看了源代码,它所做的只是将命令作为逗号分隔值输出到标准输出。这不足为奇。

因此,只要您在 Linux 上,您就可以以标准方式将其重定向到一个文件?

例如/

redis-cli --csv your-command > stdout.csv 2> stderr.txt
于 2012-07-06T21:31:31.753 回答
3

命令:

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"
...
于 2020-08-10T23:47:59.040 回答
0

转到srcredis目录并运行以下命令

./redis-cli $command > $file_name

示例:./redis-cli SMEMBERS "$KEY" > $file_name(RANDOM NAME)

这对我有用。

于 2017-02-23T16:21:54.937 回答
0

如果是套接字和/或多个 redis 服务器,您需要执行以下操作:

redis-cli -s /path/to/socket --csv your-command > stdout.csv 2> stderr.txt

例如

redis-cli -s /var/run/redis/redis4.sock --csv lrange my_list 0 -1 > stdout.csv 2> stderr.txt
于 2017-09-13T07:52:54.027 回答
0

如果您不需要像这样将值用引号括起来--csv,那么原始输出就足够了,您只需将每 2 行用逗号连接起来即可获得 CSV:

redis-cli <your redis command> | paste -d ","  - - > out.csv
于 2020-11-14T14:22:09.073 回答