Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Postgresql文件大规模插入Redis_Postgresql_Redis - Fatal编程技术网

从Postgresql文件大规模插入Redis

从Postgresql文件大规模插入Redis,postgresql,redis,Postgresql,Redis,您好,我正在尝试从Mysql迁移到Postgresql。 我有一个查询一些记录的SQL文件,我想把它放在Redis中,并进行大规模插入 在Mysql中,它在这个示例命令下工作 sudo mysql -h $DB_HOST -u $DB_USERNAME -p$DB_PASSWORD $DB_DATABASE --skip-column-names --raw < test.sql | redis-cli --pipe 它的一个输出类似于 "*3\r\n$3\r\nSET\r\n$11\r

您好,我正在尝试从Mysql迁移到Postgresql。 我有一个查询一些记录的SQL文件,我想把它放在Redis中,并进行大规模插入

在Mysql中,它在这个示例命令下工作

sudo mysql -h $DB_HOST -u $DB_USERNAME -p$DB_PASSWORD $DB_DATABASE --skip-column-names --raw < test.sql | redis-cli --pipe
它的一个输出类似于

"*3\r\n$3\r\nSET\r\n$11\r\nddi_lemmas:1\r\n$22\r\nabil+abil+neg+aor+pagr\r\n"
但我在命令行中找不到任何类似Mysql命令管道的示例

有些示例有两个阶段,不直接插入txt文件,然后将其放入Redis

sudo PGPASSWORD=$PASSWORD psql -U $USERNAME -h $HOSTNAME -d $DATABASE -f test.sql > data.txt
上面的命令正在工作,但我不想使用列名

我试图找到直接将Postgresql结果输出发送到Redis的方法

你能帮我吗

解决方案:

如果我想从sql文件中插入WITHRESP命令。借助@teppic

echo -e "$(psql -U $USERNAME -h $HOSTNAME -d $DATABASE -AEt -f test.sql)" | redis-cli --pipe
从psql手册页,-t将关闭列名和结果行计数页脚等的打印

-A关闭对齐,-q设置安静模式

看起来您正在输出RESP命令,在这种情况下,您必须使用转义字符串格式来获取换行符/回车符对,例如e'*3\r\n'注意e

通过管道将命令设置到redis cli可能更简单:

psql -At -c "SELECT 'SET ddi_lemmas:' || id :: TEXT || ' ' || lemma FROM ddi_lemmas" | redis-cli
psql -At -c "SELECT 'SET ddi_lemmas:' || id :: TEXT || ' ' || lemma FROM ddi_lemmas" | redis-cli