我想将文件的内容复制到postgres。 文件的内容是这样的:
2014-06-13;Platform;-38193438.530000;EUR
这是我的复制代码:
COPY statistics(referencedate, platform, total, currency)
FROM '/home/output.csv'
WITH DELIMITER ';';
此复制命令有效,并插入行。但是,我需要插入平台的名称,而不是单词"平台"。我丑陋的解决方法是在COPY之前运行脚本并修改原始文件。但我并不相信没有更优雅的解决方案。
我尝试了以下代码,但它不起作用:
COPY statistics(referencedate, platform, total, currency)
FROM '/home/output.csv'
WITH DELIMITER ';' AND platform AS 'AAA';
答案 0 :(得分:2)
您可以使用以下内容执行此操作:
`COPY ... FROM PROGRAM 'awk -F ; ''{ printf "%s,%s,%s,%s\n",$1,"AAA",$3,$4,$5; }'''`
(未经测试,PROGRAM
仅为9.3)
即。在管道输入时使用输入文件上的过滤器。过滤器可以是您想要的任何内容。 Perl / Python / Awk / Sed /无论是什么片段或脚本。
COPY
它的自我没有你想要的内置直接。在这种简单的情况下,可以 ALTER TABLE ... ALTER COLUMN platform SET DEFAULT 'AAA
'和ALTER TABLE ... ALTER COLUMN platform SET NOT NULL
在您要更改的列上,然后COPY .... (referencedate, total, currency) FROM ...
,但它最多有点麻烦。< / p>