如何自动将CSV文件中的数据填充到PostgreSQL?

时间:2017-08-24 13:52:41

标签: postgresql csv

我正在使用此SQL查询来填充数据库:

CREATE TEMP TABLE tmp_x AS SELECT * FROM testcsv LIMIT 0; -- but see below

COPY tmp_x FROM 'D:\water_utility.csv' (header, FORMAT CSV, ENCODING 'WIN1251');

insert into testcsv select * from (
select x.* 
from tmp_x x
left outer join testcsv t on t. timestamp = x. timestamp
where t. timestamp is null
) as missing;

DROP TABLE tmp_x; -- else it is dropped at end of session automatically

您能否通过提供建议如何从这样命名的文件夹中获取所有文件并使用数据填充表格来帮助我:

  

sample_1.csv sample_2.csv ... sample_12.csv

数字是创建文件的月份。如何创建自动填充脚本?

1 个答案:

答案 0 :(得分:1)

尝试像:

do
$$
begin
 execute format ($f$COPY tmp_x FROM 'D:\water_utility%s.csv' (header, FORMAT CSV, ENCODING 'WIN1251');$f$,extract(month from now()));
end;
$$
;

而不是你的副本。

<强>更新 它通常被称为动态sql - 我在调用之前格式化语句。在这里,我将当前月号附加到文件名,因此执行行将是:

COPY tmp_x FROM 'D:\water_utility8.csv' (header, FORMAT CSV, ENCODING 'WIN1251');

因为八月是第8个月(我使用extract(month from now())