将大量的CSV加载到Postgres中

我试图通过复制命令copy mytable from 'path/to/myfile.csv' with CSV;大约100Mlogging(大约8GB的磁盘)的CSV加载到Postgres中: copy mytable from 'path/to/myfile.csv' with CSV; 我一直在监视进度,通过检查pgAdmin中报告的表大小并将其与CSV大小进行比较。 我知道这将是一个宽松的比较充其量,我很想听听有没有更好的方法来监控进度。

问题在于:这个负载已经持续了相当长的时间(我认为时间太长了),而且当我不断检查桌子大小时,负载似乎正在减速。 也就是说,加载一个新的100MB的数据比加载的时间要早​​得多。 为什么?

除了将我的CSV分成许多小文件之外,是否有任何调整,configuration或替代方法可以用于更快的加载?


更新:架构/数据细节

一个有代表性的数据行

 1234567890,FOOBARF,2010-01-15 03:07:05,0.924700,0.925000 

完整的模式定义:

 CREATE TABLE mytable ( id integer NOT NULL, rname character varying(7) NOT NULL, ts timestamp without time zone NOT NULL, stat1 numeric NOT NULL, stat2 numeric NOT NULL, CONSTRAINT pk_id PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); ALTER TABLE mytable OWNER TO postgres; 

如果你可以禁用索引,你可能会有更好的运气。 但是这不是一个好的答案,因为你没有提供关于表格的足够信息。

请张贴表defn,约束,索引!!!和触发器。

另外,你是否确信CSV数据是正确的,并且与你的表格匹配?