具有 cbq 和 cbimport 命令组合的 Couchbase 脚本不起作用
Posted
技术标签:
【中文标题】具有 cbq 和 cbimport 命令组合的 Couchbase 脚本不起作用【英文标题】:Couchbase script with combination of cbq and cbimport commands is not working 【发布时间】:2022-01-09 05:12:09 【问题描述】:我正在尝试编写一个脚本文件,该文件将使用 [cbq][1] 命令导出一些数据,然后通过 [cbimport][2] 命令将这些数据导入目标集群。我想增强脚本,使其可以导出大量数据并导入另一个集群。 但是在我的本地机器上,它失败了。实际上,脚本在 cbq 的 SELECT 命令 命令中卡住。
有人可以建议我怎么做吗?下面是我正在使用的测试脚本。
echo "Hello World"
cbq -u Administrator -p Administrator -e "http://localhost:8093";
\REDIRECT temp.txt;
SELECT * FROM `sample.data` where id="106" --output="temp.txt";
\REDIRECT OFF;
cbimport json -c http://target-cluster:8091 -u Administrator -p Administrator -b sample.data -d file://C:\Users\myusername\Desktop\temp.txt -f list -g %docId%;
\EXIT;
以下是上述脚本的响应:
Hello World
Connected to : http://localhost:8093/. Type Ctrl-D or \QUIT to exit.
Path to history file for the shell : C:\Users\myuser\.cbq_history
而且在这里卡了很长时间。
【问题讨论】:
查询是否可以正常工作?存储桶实际上称为“sample.data”,还是意味着集合? forums.couchbase.com/t/cbimport-not-working-as-expected/32292 【参考方案1】:特别是对于你的这个脚本,你有一个分号在 URL 之后终止 cbq 调用,所以它只是处于交互模式。
你想试试:
echo "Hello World"
cbq -u Administrator -p Administrator -e "http://localhost:8093" --output="temp.txt" -s "SELECT * FROM `sample.data` where id='106'"
# add processing to convert from redirected output to cbimport format
cbimport json -c http://target-cluster:8091 -u Administrator -p Administrator -b sample.data -d file://C:\Users\myusername\Desktop\temp.txt -f list -g %docId%
作为脚本中的 3 个命令。 (注意语句中没有使用双引号,因为选择的 shell 引号是双引号。你也可以反转这个选择。)
【讨论】:
感谢您的回答。使用相同的方法,我能够产生期望的结果。以下是我使用的命令。cbq -u Administrator -p $password -q -e “ http://localhost:8093” --script=“select * FROM com.test.default` where id==”“106"”;" | jq -c ‘.results[0].“com.test.result”’ > $file ` cbimport json -c http://target-cluster:8091 -u Administrator -p $password -b com.test.result -d file://$file -f lines -g %docId%
以上是关于具有 cbq 和 cbimport 命令组合的 Couchbase 脚本不起作用的主要内容,如果未能解决你的问题,请参考以下文章