很大的CSV冻结Ubuntu的postgres副本问题

时间:2019-06-01 19:58:42

标签: sql postgresql ubuntu

我在使用COPY命令用很大的csv文件(〜40gb)填充postgres表时遇到问题。这是我第一次真正使用SQL / postgres,但是我在R / python / linux方面有几年的经验。

CREATE DATABASE exampledb OWNER exampleuser;

#create schema
\c exampledb;
CREATE SCHEMA exampledbSC;
set search_path to exampledbSC;

#this creates the tables
psql 'dbname=exampledb user=exampleuser options=--search_path=exampledbSC' -f postgres_create_tables.sql

#this populates the tables with csv data 
psql 'dbname=exampledb user=exampleuser options=--search_path=exampledbSC' -f postgres_load_data.sql -v data_dir='/home/user/datafolder'

最后一个脚本的内部在csvs和表之间有多个\ copy调用,如下所示:

--  Load Data for Table table1
\copy table1 FROM 'table1.csv' DELIMITER ',' CSV HEADER NULL ''
--  Load Data for Table table2
\copy table2 from 'table2.csv' delimiter ',' csv header NULL ''

前3个\ copy执行得很好,但第4个是40gb文件-最终,我在Ubuntu中失去了对键盘和单击功能的控制(但可以移动鼠标)。由于自述文件特别指出这可能是一个数小时的过程,因此我将程序保持这种状态约8个小时,但这似乎是异常的。我所在的本地计算机上有16个内核,在M.2 nvme驱动器上有32gb RAM访问数据。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这个问题与我运行postgres-10有关,但是表构建脚本适用于以前的版本。我使用的脚本的第二个版本10在一个小时内完成。