我可以将 .sql 文件传递给 psql 吗?
Can I pass a .sql file to psql?
我正在尝试将 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:/#
如果我删除文件=query.sql arg,这会导致连接到 psql。我只是不知道如何将查询文件传递给它?
在文档中,有两个参数看起来很有趣:
-f filename
--file=filename
Read commands from the file filename, rather than standard input
还有:
-c command
--command=command
Specifies that psql is to execute the given command string, command
我尝试了 file=query.sql
,但失败并显示错误消息 above.The 命令一个想要一个字符串,而我想传递一个 .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 以便 运行 查询?
您似乎将选项打包到连接字符串中。但是 --file 必须作为 psql 的选项直接给出,而不是作为连接字符串的一部分。
psql "${psql_args[*]}" --file=query.sql
因为其他答案似乎忽略了这一点。
以下是如何将动态选项存储到数组中,并将其作为参数传递给命令:
#!/usr/bin/env bash
psql_args=(
"--dbname=analytics"
"--host=$INPUT_HOST"
"--user=analytics"
"--port=32648"
"--file=query.sql"
)
psql "${psql_args[@]}"
我正在尝试将 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:/#
如果我删除文件=query.sql arg,这会导致连接到 psql。我只是不知道如何将查询文件传递给它?
在文档中,有两个参数看起来很有趣:
-f filename --file=filename
Read commands from the file filename, rather than standard input
还有:
-c command --command=command
Specifies that psql is to execute the given command string, command
我尝试了 file=query.sql
,但失败并显示错误消息 above.The 命令一个想要一个字符串,而我想传递一个 .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 以便 运行 查询?
您似乎将选项打包到连接字符串中。但是 --file 必须作为 psql 的选项直接给出,而不是作为连接字符串的一部分。
psql "${psql_args[*]}" --file=query.sql
因为其他答案似乎忽略了这一点。
以下是如何将动态选项存储到数组中,并将其作为参数传递给命令:
#!/usr/bin/env bash
psql_args=(
"--dbname=analytics"
"--host=$INPUT_HOST"
"--user=analytics"
"--port=32648"
"--file=query.sql"
)
psql "${psql_args[@]}"