这是一项 ETL 作业。因此,如果今天的数据已存在于目标表(在 Azure SQL Server 中)中,我需要用今天处理中的新记录替换现有记录。否则,插入所有记录。我相信这可以通过 MERGE INTO 命令来完成,但是如何从 Azure Databricks 对 Azure SQL 数据库表执行更新插入。
为了避免在 Databricks 中将数据更新插入 SQL Server 表时出现主键冲突问题,您可以在 SQL Server 中使用 MERGE 语句。
MERGE 语句允许您根据目标表中是否存在数据来执行 INSERT 和 UPDATE 操作。您可以使用 MERGE 语句来比较源表和目标表中的数据,然后根据需要插入或更新数据。
这里是如何使用 MERGE 语句将数据更新插入 SQL 的示例
为了避免在 Databricks 中将数据更新插入 SQL Server 表时出现主键冲突问题,您可以在 SQL Server 中使用 MERGE 语句。
MERGE 语句允许您根据目标表中是否存在数据来执行 INSERT 和 UPDATE 操作。您可以使用 MERGE 语句来比较源表和目标表中的数据,然后根据需要插入或更新数据。
以下是如何使用 MERGE 语句将数据更新插入 SQL Server 表的示例:
MERGE INTO dbo.MyTable AS target
USING (
SELECT
Column1, Column2, Column3
FROM
my_source_data
) AS source
ON (target.PrimaryKeyColumn = source.PrimaryKeyColumn)
WHEN MATCHED THEN
UPDATE SET
Column1 = source.Column1,
Column2 = source.Column2,
Column3 = source.Column3
WHEN NOT MATCHED THEN
INSERT (PrimaryKeyColumn, Column1, Column2, Column3)
VALUES (source.PrimaryKeyColumn, source.Column1, source.Column2, source.Column3);
在此示例中,dbo.MyTable 是 SQL Server 中的目标表,my_source_data 是要更新插入到目标表中的源数据。 PrimaryKeyColumn 是目标表中的主键列,用于匹配源表和目标表之间的记录。
WHEN MATCHED 子句用于更新目标表中的现有记录,WHEN NOT MATCHED 子句用于向目标表中插入新记录。
通过使用 MERGE 语句,您可以在将新记录插入目标表之前检查记录是否存在,从而避免主键违规问题。如果目标表中已存在具有相同主键的记录,则会更新该记录而不是插入该记录,这将防止创建重复项。