仅从特定模式迁移数据

后端开发 2026-07-08

我正在尝试将表和数据从SQL Server迁移到PostgreSQL,但我只想迁移来自特定模式的表。

文档说明了如何在一个模式中包含和排除表,但我还没找到如何指定该模式中的所有表。

我当前的 ms.load 文件是这样的(省略了实际的用户名、密码和数据库名):

LOAD database
    FROM mssql://mssql_user:password@server:1433/database
    INTO pgsql://postgres_user:[email protected]:5432/database

WITH create tables,
     create indexes,
     reset sequences

INCLUDING ONLY TABLE NAMES LIKE '%' IN SCHEMA 'wh';

我在与 ms.load 文件同一目录下的 .ps1 文件中,使用以下脚本调用 pgloader

docker run --rm -it -v ${PWD}:/work dimitri/pgloader:latest pgloader /work/ms.load

我得到如下错误:

There is no applicable method for the generic function

when called with arguments
(NIL "Subject").

如果我调用该模式中的某个具体表,它可以工作,但我更愿意不要逐个按名称指定每个表。至于排除,出于某种原因它不起作用。

解决方案

原来使用“%”就能解决,错误其实是因为存在一个外键指向另一个模式中的表,一旦我把该表也包含进来后,查询就能正常执行。最终的代码如下:

LOAD database
    FROM mssql://mssql_user:password@server:1433/database
    INTO pgsql://postgres_user:[email protected]:5432/database

WITH create tables,
     create indexes,
     reset sequences

INCLUDING ONLY TABLE NAMES LIKE 'Subject' IN SCHEMA 'eam'
INCLUDING ONLY TABLE NAMES LIKE '%' IN SCHEMA 'wh';
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章