如何解决 psql: Argument list too long 的错误?

如何解决 psql: Argument list too long 的错误?

我有一个包含以下 psql 命令的脚本:

psql -h $PHOST -p $PPORT -U $PUSER -d $PDATABASE -c "SELECT COUNT(*) FROM (${SQL%?}) AS query;"

当我传递一个查询一两个关系的简单查询时,没有问题。但是,当我传递一个长查询时,出现以下错误:

/usr/bin/psql: Argument list too long

我使用 mv 命令找到了“参数列表太长”的解决方案,我尝试了它,但没有任何改变。

ulimit -S -s unlimited之前使用 psql 命令来增加 MAX_ARG 大小,但仍然出现错误。

如何解决 psql: Argument list too long 的错误?

答案1

这一xargs技巧在这里不起作用,因为 psql 需要-c是一个大字符串。

尝试另一种方法,将所有 sql 放入名为statements.sql并启动的文件中psql,如下所示:

psql -h "$PHOST" -p "$PPORT" -U "$PUSER" -d "$PDATABASE" -f statements.sql

创造statemements.sql

printf 'SELECT COUNT(*) FROM (%s) AS query;\n' "${SQL%?}" >statements.sql

printf该命令不会像 shell中的内置实用程序那样遇到“参数列表太长”问题bash

相关内容