Postgresql:从批处理文件传递的引用变量

时间:2017-10-13 17:13:16

标签: postgresql batch-file psql

我有一个批处理脚本,我希望能够在我的笔记本电脑和台式机上运行。根据我正在运行它的机器,我需要将2个文件路径中的1个传递给postgresql脚本。

if "%computername%"=="LAPTOP" (
    set init_path=C:\path1
) else (
    set init_path=C:\path2
)

psql -U postgres -d dbname -v full_path=%init_path%\csvfile.csv -qf sql/sqlfile.sql

我的postgresql脚本如下所示:

begin;

drop table if exists schm.table_name;

create table schm.table_name (
    var1        date,
    var2        float,
    var3        text,
    var4        float
);

truncate table schm.table_name;

\set quoted_path '\'' :full_path '\''
\copy schm.table_name from :quoted_path with delimiter as ',' csv quote as '"';

commit;

当我运行它时,我收到错误:

:quoted_path: No such file or directory

这是引用变量的正确方法吗?我的语法基于this线程。

0 个答案:

没有答案