我试图在 Postgresql 中的 SQL 语句中创建一个变量,但没有成功。 路径下存放了很多csv文件。我想在 Postgresql 中设置路径,它可以告诉复制命令在哪里可以找到 csv 文件。
SQL语句示例:
\set outpath '/home/clients/ats-dev/'
\COPY licenses (_id, name,number_seats ) FROM :outpath + 'licenses.csv' CSV HEADER DELIMITER ',';
\COPY uploaded_files (_id, added_date ) FROM :outpath + 'files.csv' CSV HEADER DELIMITER ',';
它没有用。我得到错误:没有这样的文件。 licneses.csv 和 files.csv 这两个文件存储在 Ubuntu 上的/home/cilents/ats-dev 下。我发现了一些使用“\set file 'license.csv'”的命令。它对我不起作用,因为我有很多 csv 文件。我也尝试使用“from : outpath || 'licenses.csv'”。它没有工作醚。感谢您的帮助。
使用 9.3。
最佳答案
看起来 psql
不支持 :variable
替换 psql
反斜杠命令。
test=> \set somevar fred
test=> \copy z from :somevar
:somevar: No such file or directory
因此您需要通过外部工具(如 unix shell)来执行此操作。例如
for f in *.sql; do
psql -c "\\copy $(basename $f) FROM '$f'"
done
关于postgresql - 如何将变量传递给Postgresql中的复制命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45356803/