首页 > 解决方案 > 具有唯一约束的 SQL Server 到 PostgreSQL

问题描述

我正在尝试通过使用 pg 作为链接服务器并调用 SQL Server 的存储过程将数据从 MS SQL Server 推送到 PostgreSQL(都在我的本地设备上)。

一个简单的

INSERT INTO [POSTGRESQL].[mypgdb].[MyPgSchema].[MyPgTable](MyPgCol1, MyPgCol2, MyPgCol3)
(SELECT [MySqlCol1], [MySqlCol2], [MySqlCol3] FROM MySqlTable);

工作正常。

问题是我需要一个唯一约束(MyPgCol1, MyPgCol2, MyPgCol3)来避免规范化表的重复行,并在我尝试插入 SQL Server 数据时出现唯一约束冲突错误。我知道我只能通过调用插入新行

INSERT INTO "MyPgSchema"."MyPgTable"("MyPgCol1", "MyPgCol2", "MyPgCol3")
VALUES (1, 2, 3),
ON CONFLICT ON CONSTRAINT "MyUniqueConstraint_On_Col1_Col2_Col3"
DO NOTHING;

来自 Postgre 网站。

但是如何ON CONFLICT ON CONSTRAINT... DO NOTHING;在我的 SQL Server 存储过程中集成呢?我尝试了OPENQUERY语句,但语法不匹配。

还有其他方法可以从 SQL Server 端调用 PostgreSQL 查询吗?或者是否可以将 PostgreSQL 表配置为DO NOTHING默认违反唯一约束?

标签: sql-serverpostgresqlstored-procedureslinked-serverunique-constraint

解决方案


推荐阅读