Postgres复制查询连接丢失错误

时间:2014-11-29 05:34:16

标签: postgresql amazon-rds psql

我正在尝试使用以下命令将大约200M行(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发送前100M行而不是全部200M行,则命令成功。我猜测某个地方有一个超时导致查询与完整数据集失败。我无法找到任何超时设置或参数。

如何使用完整数据集使批量插入成功?

1 个答案:

答案 0 :(得分:2)

当我阅读您正在使用的语句时,它基本上创建了一个巨大的字符串,然后连接到SQL,然后它尝试将整个字符串作为参数提供。

如果您加载psql并运行类似\copy ... from '/path/to/data.csv' ...的内容,我想象连接可能保持活动状态,而文件的内容是按块流式传输的。

这将是我的预感,为什么10M行工作(=在连接超时之前完全推送参数)但不是整个文件(=参数仍在上传)。