news 2026/8/22 2:18:43

如何把 MySQL 与 CSV 数据快速迁入 PostgreSQL:pgloader 实操指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何把 MySQL 与 CSV 数据快速迁入 PostgreSQL:pgloader 实操指南

如何把 MySQL 与 CSV 数据快速迁入 PostgreSQL:pgloader 实操指南

【免费下载链接】pgloaderMigrate to PostgreSQL in a single command!项目地址: https://gitcode.com/gh_mirrors/pg/pgloader

pgloader 是一个面向 PostgreSQL 的数据入库工具:它走 COPY 协议把数据流式灌进目标库,整库搬过去时可以自动发现源端表结构、建索引和外键;遇到出问题的行,默认策略是把坏行写进 reject 文件继续往下走,而不是一棒子打死整批数据。适合刚接手库、要把旧数据搬进 PostgreSQL 的开发者与 DBA。

适用场景不适用场景
判断SQLite / MySQL / MSSQL / PostgreSQL 整库搬到 PostgreSQL;CSV、定长文件等入库目标不是 PostgreSQL 系产品;需要复杂多步清洗的 ETL 流程
一句话理由一条命令完成建表、建索引与数据加载,出错行自动隔离,过程可重复执行需要把数据改写成分布式拓扑或对接非 SQL 引擎时,另选工具

最小可运行路径:3 步跑通第一次入库

1. 安装并验证环境

v4 是 Clojure 重写版,交付物是一个自包含 JAR,需要 Java 21 或更高版本;不想跟 JVM 打交道的话,Debian/Ubuntu 仓库里仍可直接装 v3。装完后跑这条命令,预期返回版本号而不是报错:

java -jar pgloader.jar --version

2. 一条最简命令完成整库搬迁

下面这条命令会把一个 SQLite 库的表、索引、外键和注释全部搬到目标 PostgreSQL 库,是官方 quickstart 里最短的整库路径:

createdb newdb pgloader ./test/sqlite/sqlite.db postgresql:///newdb

3. 验证数据已落库

用 psql 连上新库,确认表建出来了、行数对得上。预期先看到表清单,再看到一个与源库一致的行数:

psql -d newdb -c '\dt' psql -d newdb -tc 'select count(*) from "表名";'

如果行数对不上,不要急着怀疑工具,先翻运行日志里的 reject 计数,看是不是有一批行被拒收了。

100 万行级库的迁移速度,先看这两个参数

参数怎么定,按数据量级对号入座即可:

数据量级建议参数判断依据
小文件 / 小表(<10 万行)默认值COPY 流式加载本身很快,调参收益不明显
百万到千万行WITH batch rows = 100000, prefetch rows = 100000批太小提交频繁,批太大单条失败回滚面大,取折中
大表且目标机空闲再叠加workers = 4concurrency = 4多表并行加载;先确认磁盘 IO 不是瓶颈,否则加了反而更慢
  • 调优顺序:先动batch rows,再动workers,两个都不够再看目标库的maintenance_work_mem
  • v4 基于 JVM,整库数据量大时记得用-Xmx调堆,官方 README 明确这是替代 v3 Lisp 堆的方案。
  • 记住默认值:数据库源默认on error stop,一错就停;文件源默认on error resume next,坏行落 reject 文件后继续。

迁移完成后如何校验数据

  • 看运行日志与 summary 文件(--summary指定输出位置)里的 rejected 计数,并确认 reject 文件为空或行数符合预期。
  • 源库与目标库逐表做行数比对:
SELECT relname, n_live_tup FROM pg_stat_user_tables ORDER BY 1;
  • 挑一两张关键表抽样核对:按主键取几条,逐字段比对;对日期、金额列额外确认转换后的取值是否合理(比如 MySQL 的0000-00-00是否按预期变成了 NULL)。

迁移失败时怎么退回到安全状态

  • 动真库之前,先pg_dump备份目标库,并记下本次运行使用的.load文件与命令行。
  • 默认策略下,pgloader 在目标端先 DROP 再 CREATE,所以最省事的回滚就是删库重建后重跑,整条命令是幂等可重复的。
  • 想"错一行就整体停",加--on-error-stop,让第一次失败暴露问题,而不是跑完才发现半成品。
  • 正式跑之前用--dry-run只查连接不写数据,把网络、账号、SSL 这类低级错误挡在前面。

迁移失败时先看哪 5 种现象

现象最可能的原因处理动作
连不上目标库账号、网络或 SSL 配置不对看日志第一条错误,先跑--dry-run
invalid byte sequence for encoding源端字符集与目标 UTF8 不符检查--list-encodings,在连接串或配置里指定源编码
唯一键冲突目标表已有同主键数据确认是否该用 drop/truncate 策略清空后重灌
JVM 堆内存溢出v4 下-Xmx默认值不够调大-Xmx,同时减小batch rows
速度比预期慢批太小或没开并行按上一节顺序改batch rowsworkers

收尾

.load文件纳入版本管理,迁移动作从此可重复、可审查。先从上面那条最短命令跑通,再按docs/command.rst里的语法逐步加上 WITH 与 CAST 子句;各数据库源的细节参考可查docs/ref/,加载链路实现在src/load/目录。

【免费下载链接】pgloaderMigrate to PostgreSQL in a single command!项目地址: https://gitcode.com/gh_mirrors/pg/pgloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 2:18:05

GPT-5.6直连实战:重构PPT/Word/Excel工作流,从提示工程到自动化生成

上周&#xff0c;我为了准备一个技术分享&#xff0c;需要快速生成一份结构清晰、图文并茂的PPT。按照传统流程&#xff0c;我得先搭框架、找模板、填内容、调格式&#xff0c;一套下来至少半天。这次&#xff0c;我尝试用了一个新工具&#xff0c;输入主题和几个关键词&#x…

作者头像 李华
网站建设 2026/8/22 2:17:19

跨境供应链技术解析:基于网格化仓群的美国海外仓旺季路由优化方案

针对Q4旺季美国海外仓的库容挤兑与尾程溢价问题&#xff0c;本文从供应链调度视角&#xff0c;解析中大件海外仓的网格化布局方案。通过多仓群路由算法与24小时一件代发系统&#xff0c;实现5区内85%-90%的履约覆盖率&#xff0c;提供技术维度的降本思路。 8月末周末选品数据显…

作者头像 李华
网站建设 2026/8/22 2:15:46

手机全能扫描软件:从OCR识别到PDF处理的全流程实战指南

在日常办公和学习中&#xff0c;我们常常需要处理纸质文档、图片中的文字信息&#xff0c;或是将不同格式的文件进行转换。无论是学生整理课堂笔记、上班族处理合同票据&#xff0c;还是开发者需要快速提取代码截图中的文本&#xff0c;一个功能强大、操作便捷的手机扫描与文字…

作者头像 李华
网站建设 2026/8/22 2:15:28

RTX 3060实测:MiniMax H3模型+Sage Attention,8步生成媲美20步画质

如果你手头只有一张 RTX 3060 显卡&#xff0c;却想流畅地跑起最新的文生图模型&#xff0c;是不是总觉得“显存告急”、“速度感人”&#xff1f;最近&#xff0c;MiniMax 开源的 H3 模型&#xff0c;配合 ComfyUI 官方工作流&#xff0c;号称能在保持画质的前提下&#xff0c…

作者头像 李华
网站建设 2026/8/22 2:14:55

在家庭除醛场景下,带除甲醛功能的中央空调如何选择

想象一下新房装修后&#xff0c;室内甲醛超标影响居住安全的场景&#xff0c;带除甲醛功能的中央空调能针对性解决这一痛点。商水县约克中央空调作为暖通空调领域的专业服务商&#xff0c;可为用户提供适配不同场景的除醛空调解决方案。据中国建筑科学研究院环境与能源研究院介…

作者头像 李华
网站建设 2026/8/22 2:14:40

亲身实测!这款全能AI论文软件,承包了我整个毕业论文流程

写过毕业论文的同学应该都深有体会&#xff0c;毕业最磨人的不是答辩&#xff0c;而是贯穿全程的论文打磨过程。从最开始毫无思路、写不出开题报告&#xff0c;到初稿内容单薄、重复率居高不下&#xff0c;再到繁琐的格式调整、不会制作学术配图&#xff0c;最后还要熬夜准备答…

作者头像 李华