ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

如何把 MySQL 与 CSV 数据快速迁入 PostgreSQL:pgloader 实操指南 如何把 MySQL 与 CSV 数据快速迁入 PostgreSQLpgloader 实操指南【免费下载链接】pgloaderMigrate to PostgreSQL in a single command!项目地址: https://gitcode.com/gh_mirrors/pg/pgloaderpgloader 是一个面向 PostgreSQL 的数据入库工具它走 COPY 协议把数据流式灌进目标库整库搬过去时可以自动发现源端表结构、建索引和外键遇到出问题的行默认策略是把坏行写进 reject 文件继续往下走而不是一棒子打死整批数据。适合刚接手库、要把旧数据搬进 PostgreSQL 的开发者与 DBA。适用场景不适用场景判断SQLite / MySQL / MSSQL / PostgreSQL 整库搬到 PostgreSQLCSV、定长文件等入库目标不是 PostgreSQL 系产品需要复杂多步清洗的 ETL 流程一句话理由一条命令完成建表、建索引与数据加载出错行自动隔离过程可重复执行需要把数据改写成分布式拓扑或对接非 SQL 引擎时另选工具最小可运行路径3 步跑通第一次入库1. 安装并验证环境v4 是 Clojure 重写版交付物是一个自包含 JAR需要 Java 21 或更高版本不想跟 JVM 打交道的话Debian/Ubuntu 仓库里仍可直接装 v3。装完后跑这条命令预期返回版本号而不是报错java -jar pgloader.jar --version2. 一条最简命令完成整库搬迁下面这条命令会把一个 SQLite 库的表、索引、外键和注释全部搬到目标 PostgreSQL 库是官方 quickstart 里最短的整库路径createdb newdb pgloader ./test/sqlite/sqlite.db postgresql:///newdb3. 验证数据已落库用 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 4、concurrency 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-runinvalid byte sequence for encoding源端字符集与目标 UTF8 不符检查--list-encodings在连接串或配置里指定源编码唯一键冲突目标表已有同主键数据确认是否该用 drop/truncate 策略清空后重灌JVM 堆内存溢出v4 下-Xmx默认值不够调大-Xmx同时减小batch rows速度比预期慢批太小或没开并行按上一节顺序改batch rows与workers收尾把.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),仅供参考
返回列表