pgloader 实战指南:一条命令把 MySQL、SQLite、CSV 数据全部搬进 PostgreSQL
pgloader 实战指南一条命令把 MySQL、SQLite、CSV 数据全部搬进 PostgreSQL【免费下载链接】pgloaderMigrate to PostgreSQL in a single command!项目地址: https://gitcode.com/gh_mirrors/pg/pgloader凌晨两点你盯着屏幕上的迁移日志发呆。第 37 次重跑同一个导入脚本每次都在同一行脏数据上报错退出——数据里有个 MySQL 特有的0000-00-00日期还有一个字段带了非法编码。你手动改了这行重跑结果 5 分钟后又卡在另一行上。如果你经历过这个场景那这篇 pgloader 实战指南就是为你写的。pgloader 是专为 PostgreSQL 打造的数据加载工具它的核心思路是把出错就整体回滚的迁移逻辑换成坏数据进废纸篓、好数据照常入库的搬运逻辑。它支持的源头包括 MySQL、SQLite、MS SQL Server以及 CSV、DBF、IXF、固定宽度文件而你的操作往往只是一条命令。先搞明白pgloader 和传统 COPY 到底差在哪很多人第一次接触 PostgreSQL 的COPY命令时都觉得这玩意够用了。确实在数据干净、格式统一的小规模导入里COPY又快又简单。但真实世界的数据从来不是这样。我用一个搬家的比喻来解释传统 COPY 像一次只能搬一整车货物只要有一件东西碎了整车退回而 pgloader 像专业的搬家公司碎掉的单独打包送进损坏物品登记处其余完好的继续搬。对比维度pgloader传统 COPY脏数据处理单独记录到拒绝文件主流程继续一行出错全表中止数据源类型数据库MySQL/SQLite/MSSQL 多种文件格式仅本地文件数据清洗内置转换规则 自定义 CAST需提前预处理事务策略可配置支持断点续传思路全有或全无加载性能并行 worker、批量提交单线程顺序写入这个差异是 pgloader 存在的根本理由。它的设计哲学很明确迁移过程中出错是常态工具的任务是把错误的影响控制在最小范围而不是让整个迁移停摆。案例一SQLite 迁移从一条命令开始先从最简单的场景入手建立信心。把 SQLite 数据库整个搬进 PostgreSQLpgloader 只需要一条命令createdb newdb pgloader ./test/sqlite/sqlite.db postgresql:///newdb它背后自动完成了四件事读取 SQLite 的表结构、在 PostgreSQL 里建表、迁移全部数据、尽可能保持数据类型一致。这是 pgloader 最让人舒服的一点——对简单场景零配置就是最佳配置。如果你的 SQLite 文件路径复杂或者想控制更多行为可以把它写进.load配置文件。项目里test/sqlite-chinook.load就是一个很好的模板load database from sqlite/Chinook_Sqlite_AutoIncrementPKs.sqlite into postgresql:///pgloader with workers 4, concurrency 2, on error stop, include drop, create tables, create indexes, reset sequences, foreign keys, preserve index names alter table names matching Employee rename to staff set work_mem to 16MB, maintenance_work_mem to 512 MB, search_path to chinook before load do $$ create schema if not exists chinook; $$;这个文件几乎展示了.load配置的全部核心语法with控制迁移行为是否建表、是否建索引、并发数、alter table names matching做表名改名、set设置 PostgreSQL 参数、before load do在迁移前执行 SQL。小贴士.load文件的完整语法规则参见项目中的 docs/command.rst每种数据源的专属选项在 docs/ref/ 目录下有单独文档。案例二MySQL 全库迁移最经典的实战场景如果说 SQLite 是热身那 MySQL 迁移就是 pgloader 的看家本领。它不只是搬数据还会连表结构、索引、外键、自增序列、表注释一起搬过去。最简单的方式依然是命令行直接干pgloader mysql://rootlocalhost/sakila postgresql://localhost/sakila但生产环境没人会这么裸奔。真实项目里你需要控制建表策略、并行度、类型转换规则这时候就要上配置文件。下面这份摘取自 docs/ref/mysql.rst 的示例是 MySQL 迁移配置的全家福参考LOAD DATABASE FROM mysql://rootlocalhost/sakila INTO postgresql://localhost:54393/sakila WITH include drop, create tables, create indexes, reset sequences, workers 8, concurrency 1, multiple readers per thread, rows per range 50000 SET PostgreSQL PARAMETERS maintenance_work_mem to 128MB, work_mem to 12MB, search_path to sakila, public, $user SET MySQL PARAMETERS net_read_timeout 120, net_write_timeout 120 CAST type bigint when ( precision 20) to bigserial drop typemod, type date drop not null drop default using zero-dates-to-null, type year to integer MATERIALIZE VIEWS film_list, staff_list ALTER TABLE NAMES MATCHING film RENAME TO films ALTER SCHEMA sakila RENAME TO pagila BEFORE LOAD DO $$ create schema if not exists pagila; $$, $$ alter database sakila set search_path to pagila, mv, public; $$;这里面有几个点值得你重点消化CAST 子句是清洗数据的核心武器。看那行type date drop not null drop default using zero-dates-to-null——MySQL 里合法的0000-00-00日期PostgreSQL 根本不认日历里没有第 0 年。pgloader 内置了zero-dates-to-null转换函数把这类日期自动转成NULL这正是 README 里强调的招牌功能。MATERIALIZE VIEWS 处理物化视图。MySQL 的视图迁移过去后往往需要物化这个子句让你明确指定哪些视图要物化。ALTER TABLE NAMES MATCHING 支持正则。想统一把以_list结尾的表挪到mvschema写一行正则匹配即可。如果你只想迁移部分表把注释里的INCLUDING ONLY TABLE NAMES MATCHING ~/film/取消注释就行pgloader 会按正则筛选表名。案例三CSV 导入命令行和配置文件两条路数据库之间迁移是 pgloader 的强项但它对文件型数据的支持同样扎实。以 CSV 为例你可以完全不写配置文件纯命令行搞定pgloader --type csv \ --field id --field field \ --with truncate \ --with fields terminated by , \ ./test/data/matching-1.csv \ postgres:///pgloader?tablenamematching注意末尾那个?tablenamematching——目标表名是拼在连接串里的。命令行模式下--field声明每一列--with描述格式细节适合看一眼就导入的临时任务。需要处理复杂格式时用配置文件版。test/csv.load展示了更完整的姿势LOAD CSV FROM inline (x, y, a, b, c, camelCase) INTO postgresql:///pgloader?csv (a, b, camelCase, c) WITH truncate, skip header 1, fields optionally enclosed by , fields escaped by double-quote, fields terminated by , SET client_encoding to latin1, work_mem to 12MB BEFORE LOAD DO $$ drop table if exists csv; $$, $$ create table csv ( a bigint, b bigint, c char(2), camelCase text ); $$;这份配置能直观看到三件事fields optionally enclosed by处理带引号字段、skip header 1跳过表头、BEFORE LOAD DO里用两条 SQL 完成删表重建。FROM inline甚至允许直接把数据写在配置文件的;之后测试时非常好用。CSV 场景的冷门技巧读标准输入把数据源写成-配合 Unix 管道可以流式导入压缩文件比如gunzip -c source.gz | pgloader --type csv ... - pgsql:///target。详见 docs/quickstart.rst。直接加载 HTTP 上的文件把源路径换成 URLpgloader 会自动下载并解压归档文件同样一条命令。跳过表头官方测试数据test/data/2013_Gaz_113CDs_national.txt就是带一行表头的 CSV配--with skip header 1即可。迁移现场故障排查速查表数据迁移做多了你会发现踩的坑高度可预测。下面这份速查表覆盖了 90% 的现场问题症状一导入的字符全是乱码大概率是源文件编码没声明。两种解法# 命令行指定编码 pgloader --type csv --encoding latin1 source.csv postgresql:///targetdb或者在配置文件的SET段写client_encoding to latin1。pgloader 支持用--list-encodings查看它认识的所有编码名。症状二大文件迁移时内存被撑爆老版本 pgloader 有著名的 Lisp 堆内存陷阱v4 全面重写为 Clojure/JVM 版后改用标准 JVM 参数控制java -Xmx4g -jar pgloader.jar big.load这是 v4 的重大变化整个工具现在是单个自包含 JAR要求 Java 21 及以上不再依赖 SBCL 和一堆共享库迁移超大库时用-Xmx调堆大小即可比旧版好调得多。症状三远程数据库连接中途断开网络不稳时给连接加上保活参数同时调小单批次体积降低长事务风险with batch rows 10000, batch size 10MB set connect_timeout to 120, keepalives to 1, keepalives_idle to 60症状四不想重跑时把脏数据再读一遍用--summary输出报告文件用--logfile保存完整日志。排查完错误行后可以只针对拒绝文件里的数据做二次导入。症状五只想验证配置不想真跑pgloader --dry-run migration.load--dry-run只检查连接和数据源可达性不加载任何数据。上线前必跑。⚠️注意命令行选项里--on-error-stop控制遇错行为。默认 pgloader 会继续加载并把错误行写入单独文件只有你明确需要严格模式时才启用它。性能翻倍的五参数调优清单同样的迁移任务配置得当与否耗时可能差一个数量级。记住下面这五个参数基本就够用了workers并行读取线程数建议按 CPU 核数设置如workers 8。concurrency同时打开的 PostgreSQL 连接数。workers 和 concurrency 不是一回事——前者管读取后者管写入。batch rows / batch size每批提交的行数与体积上限。调大能减少提交次数但别超过内存承受力。rows per range数据库迁移时按主键范围分片读取适合大表。multiple readers per thread让单个线程可以并发读多个源配合上面参数一起用。关于索引的策略也很关键create indexes默认是先灌数据、后建索引这比边灌边建快得多。加载期间还可以用disable triggers跳过触发器灌完再手动处理约束。版本选择用 v3 还是 v4如果你在部署时看到新旧两个版本这里有个快速决策参考v4Clojure/JVM 重写版单 JAR 分发包需要 Java 21连接串统一用 JDBC 风格jdbc:mysql://、jdbc:postgresql://SSL 通过?sslmoderequire控制。src/、clojure/目录就是 v4 的源码主体。v3Common Lisp 版需要编译Makefile里的DYNSIZE参数控制内存映像大小适合需要make DYNSIZE1024这类定制的老环境。v4 对.load文件语法和命令行参数完全兼容理论上可以无缝替换。新项目直接上 v4老项目建议在测试环境验证后再切。动手之前记住这几条铁律先 dry-run再真跑。连接串写错是最常见的翻车原因--dry-run一秒就能发现。小表验证全流程。挑一两张小表跑通确认类型映射和重命名规则符合预期。先备份后迁移。源库和目标库都备份这是数据工程最基本的素养。看日志要看 summary。迁移完--summary生成的报告会告诉你每个表成功多少行、失败多少行、耗时多少这是验收依据。遇到格式问题查文档。每种数据源在 docs/ref/ 下都有独立手册比如 docs/ref/mysql.rst、docs/ref/copy.rst。测试用例在test/目录里面几十个.load文件都是可直接套用的活教材。我认识的一位 DBA 说过一句话数据迁移的价值不在于把数据搬过去而在于搬完之后你敢拍胸脯说两边对得上。 pgloader 的价值恰恰就在这里——它把对得上这个目标从一句口号变成了默认行为。今晚不用再熬夜改脏数据了。打开终端createdb、写一行连接串、回车然后去睡觉。剩下的事交给 pgloader。【免费下载链接】pgloaderMigrate to PostgreSQL in a single command!项目地址: https://gitcode.com/gh_mirrors/pg/pgloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

网页转Markdown工具从零到顺手:MarkDownload把收藏变成干净文件

网页转Markdown工具从零到顺手:MarkDownload把收藏变成干净文件

网页转Markdown工具从零到顺手:MarkDownload把收藏变成干净文件 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdo…

2026/8/23 19:37:39 阅读更多 →
微信自动化实战指南:wxauto 框架原理与完整使用教程

微信自动化实战指南:wxauto 框架原理与完整使用教程

微信自动化实战指南:wxauto 框架原理与完整使用教程 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx…

2026/8/23 18:44:24 阅读更多 →
Sunshine游戏串流一日实战:如何把PC大作搬到客厅电视上

Sunshine游戏串流一日实战:如何把PC大作搬到客厅电视上

Sunshine游戏串流一日实战:如何把PC大作搬到客厅电视上 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是一款开源免费的自托管游戏串流服务器,配…

2026/8/19 14:52:34 阅读更多 →

最新新闻

百元三模游戏手柄西圣GC1评测:霍尔摇杆扳机实测与多平台兼容性分析

百元三模游戏手柄西圣GC1评测:霍尔摇杆扳机实测与多平台兼容性分析

这次我们来看一款百元档位的三模游戏手柄——西圣GC1。对于预算有限但又不想在游戏体验上妥协的玩家来说,这个价位段的选择往往决定了是“能用”还是“好用”。西圣GC1主打三模连接、霍尔摇杆和扳机,以及不错的颜值,看起来是想在入门市场里卷…

2026/8/23 21:13:12 阅读更多 →
LLM Agent潜伏性威胁防御:从组合性安全分析到实战防护

LLM Agent潜伏性威胁防御:从组合性安全分析到实战防护

1. 从“绝地武士的背叛”到智能体系统的潜伏威胁最近在跟进大语言模型智能体(LLM Agent)安全研究时,一个代号为“Order 66”的场景反复被提及。这个源自《星球大战》的典故——最高指令66号,导致克隆人军队瞬间背叛并屠杀了他们一…

2026/8/23 21:13:12 阅读更多 →
快速幂取模算法精解:从分数小数第n位问题到模运算高效计算

快速幂取模算法精解:从分数小数第n位问题到模运算高效计算

1. 项目概述:从一道竞赛题看数论的实际穿透力“蓝桥杯国赛 小数第n位”——这个标题一出来,但凡打过算法竞赛或者对数论有点感觉的朋友,估计心里都会“咯噔”一下。它看起来只是一个求小数点后某一位数字的小问题,背后牵扯的却是初…

2026/8/23 21:13:12 阅读更多 →
支付宝电脑网站支付全流程实战指南

支付宝电脑网站支付全流程实战指南

1. 这不是“调个接口”那么简单:电脑网站支付背后的真实战场你搜“支付宝电脑网站支付”,页面上全是零散的代码片段、报错截图和一句“按文档填参数就行”。但我在电商系统里陪客户上线过17次支付宝收银台,最深的体会是:这根本不是…

2026/8/23 21:13:12 阅读更多 →
OpenHarmony硬件资源池化:从异构设备到统一资源池的架构演进与实践

OpenHarmony硬件资源池化:从异构设备到统一资源池的架构演进与实践

1. 从“一机一用”到“一机多用”:资源池化架构的演进背景在传统的嵌入式设备开发中,我们常常面临一个经典的困境:硬件资源与软件功能深度绑定。比如,一个搭载了高性能GPU的智能摄像头,它的主要任务就是视频编解码和AI…

2026/8/23 21:13:12 阅读更多 →
STM32 GPIO驱动电路设计:从三极管到MOS管实战指南

STM32 GPIO驱动电路设计:从三极管到MOS管实战指南

最近在做一个基于STM32的智能小车项目,调试电机驱动时,发现直接用MCU的GPIO引脚去控制MOS管,要么驱动不起来,要么MOS管发热严重。这让我意识到,很多嵌入式新手(包括曾经的我)容易陷入一个误区&a…

2026/8/23 21:12:12 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →