我正在尝试使用以下命令将大约2亿行(3.5GB)的数据批量加载到Amazon RDS postgresql数据库中:
cat data.csv | psql -h<host>.rds.amazonaws.com -U<user> <db> -c "COPY table FROM STDIN DELIMITER AS ','"
几分钟后,我收到了以下错误信息:
connection not open
connection to server was lost
如果我运行head -n 100000000 data.csv
只发送前1亿行而不是全部的2亿行,那么命令就会成功。我猜测在使用完整数据集进行查询时,某处存在超时导致失败。但是我找不到任何超时设置或参数。
如何使批量插入成功处理完整数据集呢?
\copy ...from '/path/to/data.csv'...
这样的命令,我想连接可能会保持活动状态,同时文件内容会被分块流式传输。虽然这只是我的猜测,但我认为这可能是为什么10M行的数据可以正常工作(即在连接超时之前成功推送所有参数),但整个文件无法工作(即参数上传仍在进行中)的原因。 - Denis de Bernardy