仅从特定模式迁移数据
我正在尝试将表和数据从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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。