Postgresql - 在 sql 脚本中将参数传递给 COPY
Postgresql - pass parameters to COPY in an sql script
我可以在我的 sql 脚本中使用 -v v1=foo
语法来很好地查询,但我不知道如何在复制语句中使用该参数。我想执行如下脚本:
psql -d my_db -f ./exports.sql -v v1="'/Users/username/test.json'"
并在脚本中执行以下版本:
copy (
select * from bar
) to :v1;
或
DO $$
BEGIN
EXECUTE
'copy (select * from bar) to ' || :v1;
END $$
或
DO $$
BEGIN
EXECUTE
format('copy (select * from bar) to %L',:v1);
END $$
但是none上面的工作:(
变量替换在字符串文字中不起作用。
使用psql
的\gexec
:
SELECT format(
$$copy (select * from bar) to %L$$,
:v1
) \gexec
我可以在我的 sql 脚本中使用 -v v1=foo
语法来很好地查询,但我不知道如何在复制语句中使用该参数。我想执行如下脚本:
psql -d my_db -f ./exports.sql -v v1="'/Users/username/test.json'"
并在脚本中执行以下版本:
copy (
select * from bar
) to :v1;
或
DO $$
BEGIN
EXECUTE
'copy (select * from bar) to ' || :v1;
END $$
或
DO $$
BEGIN
EXECUTE
format('copy (select * from bar) to %L',:v1);
END $$
但是none上面的工作:(
变量替换在字符串文字中不起作用。
使用psql
的\gexec
:
SELECT format(
$$copy (select * from bar) to %L$$,
:v1
) \gexec