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

如何将CSV文件中的数据自动填充到PostgreSQL?,postgresql,csv,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 jo

我正在使用此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
您能否帮助我,告诉我如何从名为这样的文件夹中获取所有文件,并用数据填充表格:

示例\u 1.csv示例\u 2.csv。。。示例_12.csv

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

请尝试以下方法:

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月是第8个月(我用
摘录(从现在开始的一个月())

你能解释一下我不能100%理解的代码吗?谢谢你的帮助!干杯你好。你能再帮我一次吗。我想今年也一样。如何做到这一点?嗨,请在标题上贴一个新问题。我想我会因为重复这个问题而投很多反对票。