gpt4 book ai didi

postgresql - 如何将变量传递给Postgresql中的复制命令

转载 作者:行者123 更新时间:2023-11-29 11:38:05 24 4
gpt4 key购买 nike

我试图在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com