如何向psql传递.sql文件执行查询?无效连接选项报错如何解决?
你报错的原因是混淆了psql的连接参数和运行参数:所有key=value格式的参数仅用于配置数据库连接信息,仅支持账号、密码、地址、端口、库名这类连接相关字段,file、command不属于连接参数,所以会报无效选项错误。
读取外部SQL文件需要使用独立的-f/--file运行参数,和连接参数分开传递即可,正确写法如下:
psql_args=( "password='$INPUT_PASSWORD'" dbname=analytics "host='$INPUT_HOST'" user=analytics port=32648 ) # 执行时追加-f参数指定SQL文件路径 psql "${psql_args[@]}" -f query.sql
你也可以使用标准输入重定向实现相同效果:
psql "${psql_args[@]}" < query.sql
补充注意点:
- shell数组展开时要使用
"${psql_args[@]}"而非"${psql_args[*]}",后者会把所有数组元素拼接为单个字符串,可能导致参数解析异常。 - 如果需要执行多个SQL文件,可依次添加多个
-f 文件路径参数,psql会按传入顺序执行文件内的语句。
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

