【发布时间】:2021-12-09 17:40:06
【问题描述】:
我正在尝试将 sql 文件传递给 psql。看完the docs,试了一下:
psql_args=(
"password='$INPUT_PASSWORD'"
dbname=analytics
"host='$INPUT_HOST'"
user=analytics
port=32648
file=query.sql
)
psql "${psql_args[*]}"
psql: error: invalid connection option "file"
root@380773cb4e26:/#
如果我删除 file=query.sql 参数,这将导致连接到 psql。我只是不知道如何将查询文件传递给它?
在文档中,这里有两个参数看起来很有趣:
-f 文件名 --file=文件名
Read commands from the file filename, rather than standard input
还有:
-c 命令 --command=command
Specifies that psql is to execute the given command string, command
我尝试了file=query.sql,但由于上面的错误消息而失败。命令需要一个字符串,而我想传递一个 .sql 文件。反正我试过了:
psql_args=(
"password='$INPUT_PASSWORD'"
dbname=analytics
"host='$INPUT_HOST'"
user=analytics
port=32648
command=query.sql
)
psql "${psql_args[*]}"
psql: error: invalid connection option "command"
有没有办法可以将 query.sql 传递给 psql 以运行查询?
【问题讨论】:
-
这应该是哪种语言?
-
psql - 从终端查询 postgres
-
但是您正试图从 (bash) shell 调用 psql?
-
"${psql_args[*]}"将您的数组扩展为单个字符串。您需要使用"${psql_args[@]}"将数组扩展为单独的参数。
标签: postgresql bash shell sh psql