我需要编写一组CQL脚本,其中脚本的运行是否运行应该取决于是否存在某些数据。有没有办法写这种东西:
<packageSources>
<add key="NuGet official package source" value="https://nuget.org/api/v2/" />
<add key="Another Package source" value="https://another.package.source/nuget/" />
</packageSources>
答案 0 :(得分:3)
您无法在CQL脚本中直接执行此操作,因为CQL中没有if语句控制逻辑。
但是你可以在调用cqlsh的bash脚本中执行此操作。
您可以像这样在bash中运行命令:
cqlsh -e "insert into test.t1 (p,c) values (1,8) IF NOT EXISTS;"
[applied]
-----------
True
这意味着该行不存在并且已插入。现在,如果您再次尝试插入它,它将会失败:
cqlsh -e "insert into test.t1 (p,c) values (1,8) IF NOT EXISTS;"
[applied] | p | c | v
-----------+---+---+------
False | 1 | 8 | null
所以你能做的就是捕获那个输出,然后检查它是否被应用,如下所示:
#!/bin/bash
result=`cqlsh -e "insert into test.t1 (p,c) values (1,8) IF NOT EXISTS;"`
if [[ $result == *"applied"*"True"* ]]
then
echo "the real script"
else
echo "some error"
fi
另一种方法是使用java驱动程序编写Cassandra客户端。它可以执行“INSERT ... IF NOT EXISTS”或“UPDATE ... IF”,然后测试该语句是否已应用并做出相应的响应。