我可以从 SQL 终端在所有分区(使用@GetPartitionKeys)中执行分区过程吗?

Can I execute a partitioned procedure in all partitions (using@GetPartitionKeys) from the SQL terminal?

我需要执行一项一次性任务来更新大型数据库中的所有行。我想尽快做到这一点。需要读取每一行,通过算法修改列中的值,然后使用转换后的值更新。我已经编写了一个分区存储过程来执行此操作。

我知道此页面上的示例:https://docs.voltdb.com/UsingVoltDB/sysprocgetpartitionkeys.php

我宁愿不必编写 java 客户端来在每个分区中执行此过程,理想情况下我希望调用 @GetPartitionKeys,然后在 sqlcmd 中对每个值执行存储过程。

我在 bash:

中找到了使用管道的方法
echo "exec @GetPartitionKeys INTEGER;" | sqlcmd --output-skip-metadata | awk '{print }' | xargs -n 1 sh -c 'echo "exec YourPartitionedProcedure [=10=];" | sqlcmd'

这将获取分区键列,然后为返回的每个分区键执行一次 YourPartitionedProcedure。您可以根据需要在 $0 之后添加其他参数。您也可以根据需要将 INTEGER 切换为 STRING。