使用pgloader迁移SQL Server特定schema全表至PostgreSQL遇错求助
解决pgloader迁移SQL Server特定Schema所有表的问题
问题原因
你当前使用的INCLUDING ONLY TABLE NAMES LIKE '%' IN SCHEMA 'wh'语法在pgloader中会触发内部表查找逻辑错误,通配符%的匹配方式未正确关联指定schema的表集合,导致无法识别要迁移的表对象。
正确配置方式
要迁移指定schema下的所有表,直接使用INCLUDING SCHEMAS LIKE 'wh'即可,无需针对表名做通配匹配。修正后的ms.load配置如下:
LOAD database FROM mssql://mssql_user:password@server:1433/database INTO pgsql://postgres_user:password@host.docker.internal:5432/database WITH create tables, create indexes, reset sequences INCLUDING SCHEMAS LIKE 'wh';
可选:排除Schema内特定表
如果需要迁移wh schema下的大部分表,仅排除少数表,可在配置中追加EXCLUDING语句,示例如下:
LOAD database FROM mssql://mssql_user:password@server:1433/database INTO pgsql://postgres_user:password@host.docker.internal:5432/database WITH create tables, create indexes, reset sequences INCLUDING SCHEMAS LIKE 'wh' EXCLUDING TABLE NAMES LIKE 'exclude_table1', 'exclude_table2';
验证执行
保持你的PowerShell调用脚本不变,重新运行即可完成整个wh schema下所有表的迁移:
docker run --rm -it -v ${PWD}:/work dimitri/pgloader:latest pgloader /work/ms.load
内容的提问来源于stack exchange,提问作者Dag Szapu
相关产品推荐
相关产品推荐

