Heroku PSQL 将动态参数传递给 SQL 文件
Heroku PSQL pass dynamic parameter to SQL file
我正在尝试在 Heroku PSQL 中执行一个 .sql 文件,并想在 .sql 文件中传递动态参数值。
下面是我正在使用的脚本
heroku pg:psql --app application_name <./somepath/file_to_execute.sql --param1="'$File_name'" --param2="'$Tag_id'" --param3="'$job_name'" --param4="$id"
sql 文件包含插入脚本:
INSERT INTO version_table (col1, col2, col3, col4)
VALUES (:param1,:param2,:param3,:param4);
我从 Heroku 收到以下错误消息:
Error: Unexpected arguments: --param2='1.1.1', --param3='test-name', --param4=12
如何在 Heroku PSQL 中使用动态值执行此 sql 文件
我也试过以下查询:
heroku pg:psql --app application_name <./somepath/file_to_execute.sql --v param1="'$File_name'" --v param2="'$Tag_id'" --v param3="'$job_name'" --v param4="$id"
收到以下错误消息:
Error: Unexpected arguments: param1='file_name.sql', --v, param2='1.1.1', --v, param3='test-name', --v, param4=12
您可以使用以下 heroku
命令将 URL 获取到数据库:
$ heroku pg:credentials:url --app application_name
这将打印如下内容:
Connection information for default credential.
Connection info string:
"dbname=xyz host=something.compute.amazonaws.com port=1234 user=foobar password=p422w0rd sslmode=require"
Connection URL:
postgres://foobar:p422w0rd@something.compute.amazonaws.com:1234/xyz
URL(最后一行)可以直接与psql
一起使用。使用 grep 我们可以获取该行并将其传递给 psql
:
$ psql $(heroku pg:credentials:url --app application_name | grep 'postgres://') \
< ./somepath/file_to_execute.sql \
-v param1="$File_name" \
-v param2="$Tag_id" \
-v param3="$job_name" \
-v param4="$id"
请注意,不要将单引号放在命令行的参数中,您应该以 :'param1'
.
的形式访问 SQL 中的参数
我正在尝试在 Heroku PSQL 中执行一个 .sql 文件,并想在 .sql 文件中传递动态参数值。
下面是我正在使用的脚本
heroku pg:psql --app application_name <./somepath/file_to_execute.sql --param1="'$File_name'" --param2="'$Tag_id'" --param3="'$job_name'" --param4="$id"
sql 文件包含插入脚本:
INSERT INTO version_table (col1, col2, col3, col4)
VALUES (:param1,:param2,:param3,:param4);
我从 Heroku 收到以下错误消息:
Error: Unexpected arguments: --param2='1.1.1', --param3='test-name', --param4=12
如何在 Heroku PSQL 中使用动态值执行此 sql 文件
我也试过以下查询:
heroku pg:psql --app application_name <./somepath/file_to_execute.sql --v param1="'$File_name'" --v param2="'$Tag_id'" --v param3="'$job_name'" --v param4="$id"
收到以下错误消息:
Error: Unexpected arguments: param1='file_name.sql', --v, param2='1.1.1', --v, param3='test-name', --v, param4=12
您可以使用以下 heroku
命令将 URL 获取到数据库:
$ heroku pg:credentials:url --app application_name
这将打印如下内容:
Connection information for default credential.
Connection info string:
"dbname=xyz host=something.compute.amazonaws.com port=1234 user=foobar password=p422w0rd sslmode=require"
Connection URL:
postgres://foobar:p422w0rd@something.compute.amazonaws.com:1234/xyz
URL(最后一行)可以直接与psql
一起使用。使用 grep 我们可以获取该行并将其传递给 psql
:
$ psql $(heroku pg:credentials:url --app application_name | grep 'postgres://') \
< ./somepath/file_to_execute.sql \
-v param1="$File_name" \
-v param2="$Tag_id" \
-v param3="$job_name" \
-v param4="$id"
请注意,不要将单引号放在命令行的参数中,您应该以 :'param1'
.