【发布时间】:2021-10-07 20:43:18
【问题描述】:
我有以下 sql 脚本:
\COPY my_table (column_1, column_2) FROM :csv_file WITH (FORMAT CSV, DELIMITER ',', ESCAPE '"');
我打电话的来源:
psql -d $DB_NAME -f $SQL_FILE -v csv_file="$CSV_FILE"
但它一直在寻找一个名为“:csv_file”的文件。我做错了吗?
【问题讨论】:
-
不是您问题的答案,但您也可以立即使用副本:
psql -c '\COPY ...' -
谢谢。是的,这发生在更长的 sql BEGIN - COMMIT 中。
-
我的猜测是你不能在那里使用变量,就像你不能在 SELECT 语句中使用变量字段名或表名一样。您可能必须使用 dynamic SQL,将语句构建为 varchar,然后使用
EXECUTE执行字符串。 -
可以在表名或字段名中使用psql变量,如
\set table pg_user \\ select * from :"table";
标签: sql database postgresql