我需要执行一次任务来更新大型数据库中的所有行。我想尽快这样做。每行都需要读取,并在通过算法修改的列中具有一个值,然后使用转换后的值进行更新。我已经写了一个分区存储过程来做到这一点。
我知道此页面上的示例:https://docs.voltdb.com/UsingVoltDB/sysprocgetpartitionkeys.php
我宁愿不必编写Java客户端来在每个分区中执行此过程,并且理想情况下是要调用@GetPartitionKeys,然后在sqlcmd中对每个值执行存储过程。
答案 0 :(得分:0)
我找到了一种使用bash中管道的方法:
echo "exec @GetPartitionKeys INTEGER;" | sqlcmd --output-skip-metadata | awk '{print $2}' | xargs -n 1 sh -c 'echo "exec YourPartitionedProcedure $0;" | sqlcmd'
这将使用分区键列,然后对返回的每个分区键执行一次YourPartitionedProcedure。您可以根据需要在$ 0之后添加其他参数。您也可以根据需要将INTEGER切换为STRING。