在 WSL Ubuntu 上从零到数据迁移:通过 pgloader 将 SQL Server 转 PostgreSQL 实战笔记

将 sqlserver 转 postgresql ,用 pgloader 的笔记

1. 环境初始化(WSL2 Ubuntu 22.04)

bash 复制代码
# 换国内源(可选)
sudo sed -i 's@http://.*.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y

# 装依赖
sudo apt install -y freetds-bin freetds-dev libsqlite3-dev gawk make g++ curl git

2. 安装 pgloader

bash 复制代码
# 最快方案
sudo apt install -y pgloader
pgloader --version          # ≥3.6.2 即可

3. 验证 FreeTDS 能连 SQL Server

bash 复制代码
# 脱敏变量,自行替换
export MSSQL_HOST='<SQL_SERVER_IP>'
export MSSQL_PORT='1433'
export MSSQL_USER='<USER>'
export MSSQL_PASS='<PASSWORD>'
export MSSQL_DB='<DATABASE>'

tsql -H $MSSQL_HOST -p $MSSQL_PORT -U $MSSQL_USER -P $MSSQL_PASS -D $MSSQL_DB

看到 1> 表示连通,输入 exit 退出。


4. 迁移脚本(脱敏版)

文件:migrate.load

lisp 复制代码
LOAD DATABASE
     FROM mssql://<USER>:<PASSWORD>@<SQL_SERVER_IP>:1433/<DATABASE>
     INTO postgresql://<PG_USER>:<PG_PASSWORD>@<PG_HOST>:5432/<PG_DATABASE>
WITH include drop, create tables, create indexes, reset sequences
ALTER SCHEMA 'dbo' RENAME TO 'central';

5. 跑!

bash 复制代码
pgloader migrate.load

进度实时刷,出错看 /tmp/pgloader/*.log。


6. 翻车急救表

报错 一键排查
unknown reason `ldd $(which pgloader)
Login failed 检查混合模式 & 密码
时间字段全 NULL 加 CAST type datetime to timestamp
大表超时 WITH batch rows = 10000, prefetch rows = 10000

7. 迁移后三板斧

sql 复制代码
VACUUM ANALYZE central.*;
GRANT USAGE ON SCHEMA central TO <APP_ROLE>;
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA central TO <APP_ROLE>;

8. 收尾

WSL 里一条命令即可把 SQL Server 整个 schema 搬进 PostgreSQL,记得

"先让 tsql 通,再让 pgloader 飞"。

相关推荐
Lintongzg17 分钟前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
LuminousCPP38 分钟前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象
承渊政道2 小时前
Linux系统学习【进程信号详细解析——认识、产生、保存以及捕捉信号】
linux·学习·ubuntu·ssh·vs code·进程信号
2601_957883842 小时前
2026年9月:戴尔笔记本售后情况大揭秘
笔记
江湖人称菠萝包3 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter11-数据库
笔记·qt·qt5
浩瀚地学3 小时前
deepagents学习打卡day08
经验分享·笔记·python·学习·agent
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 安装 Java 和本书示例 02
java·开发语言·笔记
牢姐与蒯3 小时前
Linux信号(一).信号产生
linux·运维·服务器·ubuntu
咖啡忍者5 小时前
【SAP BASIS】Section 5: SAP System Configuration
笔记
jeffwang9 小时前
不装分词插件,用 PostgreSQL 做中文商品搜索:bigram + 向量 + RRF,以及「单字搜不到」这个坑
搜索引擎·postgresql·go