[英]How to use sql commands with psql copy in the same file
我有一系列要运行的sql命令,其中一个是将sql结果复制到文件中。 然后,我想放桌子。 这是一个例子:
psql - d dw -U postgres -f input.sql
input.sql的内容---------
CREATE TABLE a_temp AS
SELECT a.*
FROM a
COPY dw.a_temp to '/opt/data/a/a.csv (delimiter E'\x01');
DROP table a_temp;
这一切都可以在一个文件中完成吗? 现在,该脚本仅在CREATE TABLE之后停止,并且该副本永远不会运行。 我们试图避免多次调用PSQL可执行文件。
CREATE TABLE之后缺少分号,而path之后缺少撇号。
CREATE TABLE a_temp AS
SELECT * FROM a;
COPY dw.a_temp TO '/opt/data/a/a.csv' DELIMITER E'\x01';
DROP table a_temp;
根据上下文,架构也可能存在问题。 如果将SEARCH_PATH设置为'dw',它应该可以工作,否则您可能会在公共环境中创建表a_temp,并尝试从dw复制。
您的postgresql版本是什么? 在更高版本中,您可以直接从SELECT查询复制。 –伊戈尔·罗曼琴科(Igor Romanchenko)
这是我最终选择的解决方案。 所以该语句看起来像
COPY (SELECT * FROM a)
TO '/opt/data/a/a.csv'
WITH DELIMITER E'\x01';
无需临时表!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.