Bash
如何解決 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 的錯誤?
這個
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
此命令不會像shell
printf
中的內置實用程序那樣受到“參數列表太長”問題的影響。bash