You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres COPY TO STDOUT流写入CSV时无限挂起问题排查

PostgreSQL COPY流写入本地CSV时的挂起与数据截断问题

我通过node-pg和pg-copy-stream实现了数据导出流程:利用PostgreSQL的COPY命令将数据输出到STDOUT,转为可读流后通过pipeline写入本地CSV文件,脚本由Bun执行。示例代码如下:

const saveCopyStreamToFile = async (
  pgPool: pg.Pool,
  copyQuery: string,
  fileName: string
) => {
  console.log(fileName);
  const client = await pgPool.connect();
  const readable = client.query(copyTo(copyQuery));

  const writeable = createWriteStream(`${os.homedir()}/cms/${fileName}`, {
    highWaterMark: 64 * 1024
  });

  try {
    await pipeline(readable, writeable);
  } finally {
    client.release();
  }
};

问题现象

  • 针对某张特定表,复制流会无限挂起:可读流能正常触发data事件、接收数据块,但始终不触发close事件
  • 生成的CSV文件存在数据随机截断情况,例如某单元格内容变为XYZ utilizes a configuH djid
  • 切换为postgresjs包处理该表时导出正常,但postgresjs在处理另一张表时,会出现完全相同的挂起问题
  • 查询pg_stat_activity表,发现对应的PostgreSQL进程处于idle状态

预期结果

能够将PostgreSQL复制流完整、正常地写入本地CSV文件

内容的提问来源于stack exchange,提问作者Wiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:16:00