如何在命令行中执行postgresql命令时将参数与文件一起传递?
How to pass the parameter with the file while executing the postgresql command in the comand line?
我有一个名为 insert_all.sql
的文件,其中包含以下内容。这里v1是要传递的参数。
do $$
begin
delete from tabledetails where table_name = '$(v1)';
end;
$$;
我正在尝试使用下面给出的命令在该文件 (insert_all.sql) 中执行查询。但它不起作用。我的命令有什么问题?如有不妥,请多多指教。
psql.exe -U postgres -p 5454 -h 127.0.0.1 -d desk -f D:\insert_all.sql -v v1='statusTable'
变量选项适用于文件中的简单查询,但在 DO
块内不起作用。一种选择是创建一个 TEMP table 存储变量,然后像这样使用它。
create temp table var_temp as select :'v1'::TEXT as var;
do $$
begin
delete from tabledetails where table_name =(select var from var_temp) ;
end;
$$;
psql.exe -U postgres -p 5454 -h 127.0.0.1 -d desk -f D:\insert_all.sql -v v1="statusTable"
如果您没有任何其他操作需要 DO
块,请考虑 运行 delete as plain SQL 语句。
我有一个名为 insert_all.sql
的文件,其中包含以下内容。这里v1是要传递的参数。
do $$
begin
delete from tabledetails where table_name = '$(v1)';
end;
$$;
我正在尝试使用下面给出的命令在该文件 (insert_all.sql) 中执行查询。但它不起作用。我的命令有什么问题?如有不妥,请多多指教。
psql.exe -U postgres -p 5454 -h 127.0.0.1 -d desk -f D:\insert_all.sql -v v1='statusTable'
变量选项适用于文件中的简单查询,但在 DO
块内不起作用。一种选择是创建一个 TEMP table 存储变量,然后像这样使用它。
create temp table var_temp as select :'v1'::TEXT as var;
do $$
begin
delete from tabledetails where table_name =(select var from var_temp) ;
end;
$$;
psql.exe -U postgres -p 5454 -h 127.0.0.1 -d desk -f D:\insert_all.sql -v v1="statusTable"
如果您没有任何其他操作需要 DO
块,请考虑 运行 delete as plain SQL 语句。