我正在尝试通过以下方式将大约 100M 条记录(磁盘上大约 8GB)的 CSV 加载到 Postgres 中:复制命令:copy mytable from 'path/to/myfile.csv' with CSV;
我一直在通过检查 pgAdmin 中报告的表大小并将其与 CSV 大小进行比较来监控进度。我知道这充其量只是一个松散的比较,我很想知道是否有更好的方法来监控进度。
问题在于:这个加载过程已经持续了很长时间(我认为太长了),当我不断检查表大小时,加载速度似乎在减慢。也就是说,现在加载新的 100MB 数据所花的时间比加载之前要长得多。为什么?
除了将 CSV 分成许多较小的文件之外,还有什么可以调整、配置或采取其他方法来加快加载速度吗?
更新:架构/数据细节
一个代表性数据行:
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;
答案1
如果您可以禁用索引,您可能会更幸运。但这不是一个好的答案,因为您没有提供有关表的足够信息。
请发布表定义、约束、索引!!!和触发器。
另外,您是否确定 CSV 数据正确且与您的表格相符?