运城市网站建设_网站建设公司_Java_seo优化
2025/12/17 17:28:29 网站建设 项目流程

将 sqlserver 转 postgresql ,用 pgloader 的笔记

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

# 换国内源(可选)sudosed-i's@http://.*.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g'/etc/apt/sources.listsudoaptupdate&&sudoaptupgrade -y# 装依赖sudoaptinstall-y freetds-bin freetds-dev libsqlite3-devgawkmakeg++curlgit

2. 安装 pgloader

# 最快方案sudoaptinstall-y pgloader pgloader --version# ≥3.6.2 即可

3. 验证 FreeTDS 能连 SQL Server

# 脱敏变量,自行替换exportMSSQL_HOST='<SQL_SERVER_IP>'exportMSSQL_PORT='1433'exportMSSQL_USER='<USER>'exportMSSQL_PASS='<PASSWORD>'exportMSSQL_DB='<DATABASE>'tsql -H$MSSQL_HOST-p$MSSQL_PORT-U$MSSQL_USER-P$MSSQL_PASS-D$MSSQL_DB

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


4. 迁移脚本(脱敏版)

文件:migrate.load

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. 跑!

pgloader migrate.load

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


6. 翻车急救表

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

7. 迁移后三板斧

VACUUMANALYZEcentral.*;GRANTUSAGEONSCHEMAcentralTO<APP_ROLE>;GRANTSELECT,INSERT,UPDATE,DELETEONALLTABLESINSCHEMAcentralTO<APP_ROLE>;

8. 收尾

WSL 里一条命令即可把 SQL Server 整个 schema 搬进 PostgreSQL,记得
“先让tsql通,再让 pgloader 飞”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询