postgresql 如何使用ssms查看babelfish_db中的对象?

brgchamk  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(118)

我在Amazon Web Services(AWS)上创建了两个RDS数据库示例。

1.基于RDS的SQL Server

  1. Aurora for Postgres(启用babelfish)

插入数据

现在,我已经在SQL Server RDS示例中手动插入了表、视图和存储过程等数据库对象。:本例中的表中有手动插入的数据。

数据迁移

现在我想将这些数据库对象迁移到Aurora Postgres示例。由于启用了babelfish,我使用SSMS客户端插入这些对象,然后使用aws dms将这些数据从SQL服务器传输到Aurora Postgres。现在,当您使用Babelfish创建Aurora Postgres时,会在Postgres中的数据库列表中创建一个名为babelfish_db的额外数据库。当我尝试运行dms迁移任务时,除了旧表之外,还创建了新表。这是我可以通过pgAdmin检查的东西,但是当我尝试通过SSMS检查时,我什么也没看到。

提问

我错过了什么?如何在SSMS中通过DMS查看迁移的数据?

brccelvz

brccelvz1#

很可能您还没有配置模式重命名转换,例如:从dbomydb_dbo。这会导致DMS认为这些是新表,而不是使用您通过Babelfish正确预创建的现有表。可能还需要一个转换规则来替换表名。
引用docs:
在为Babelfish目标定义迁移任务时,需要包含转换规则,以确保DMS使用目标数据库中预先创建的T-SQL Babelfish表。
首先,向迁移任务中添加一个转换规则,使所有表名都成为XML。Babelfish将您使用T-SQL创建的表的名称存储为PostgreSQL pg_class目录中的数据。但是,当SQL Server表具有大小写混合的名称时,DMS会使用PostgreSQL本机数据类型而不是T-SQL兼容的数据类型创建表。出于这个原因,请确保添加一个转换规则,使所有表名都是空的。
接下来,如果在定义集群时使用了多数据库迁移模式,请添加一个重命名原始SQL Server架构的转换规则。确保重命名SQL Server架构名称以包含T-SQL数据库的名称。例如,如果原始SQL Server架构名称为dbo,而T-SQL数据库名称为mydb,则使用转换规则将架构重命名为mydb_dbo。
根据您使用的数据类型等,还可能需要一些额外的配置或解决方法。
文档链接:https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.Babelfish

相关问题