我正在尝试同步两组表,每组表的结构(大致)相同,一组在 Microsoft SQL Server 数据库上,另一组在 MySQL 数据库上,MSSQL 有一个链接到 MySQL 数据库的服务器,称为LNK-SVR
我想知道哪个更快,删除一个表中的每条记录并使用INSERT INTO ... SELECT FROM
查询再次将其插入或使用 aINSERT...ON DUPLICATE KEY UPDATE
以便创建任何新记录并更新任何主键违规
我正在尝试同步两组表,每组表的结构(大致)相同,一组在 Microsoft SQL Server 数据库上,另一组在 MySQL 数据库上,MSSQL 有一个链接到 MySQL 数据库的服务器,称为LNK-SVR
我想知道哪个更快,删除一个表中的每条记录并使用INSERT INTO ... SELECT FROM
查询再次将其插入或使用 aINSERT...ON DUPLICATE KEY UPDATE
以便创建任何新记录并更新任何主键违规
在 Sql Server 2008 或更早的版本中,您应该使用 Merge 语句来同步两个表:
查看以下示例:运行后,两个表(@sourceTable 和 @targetTable)具有相同的行。
DECLARE @sourceTable TABLE(id INT PRIMARY KEY, somefield VARCHAR(255))
DECLARE @targetTable TABLE(id INT PRIMARY KEY, somefield VARCHAR(255))
INSERT INTO @sourceTable (id, somefield) VALUES(1, 'SourceValue1'),
(3, 'SourceValue3')
INSERT INTO @targetTable (id, somefield) VALUES(1,
'TargetValue1'), (2, 'TargetValue2')
SELECT * FROM @sourceTable SELECT * FROM @targetTable
MERGE @targetTable AS target USING @sourceTable AS source
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET somefield = source.somefield
WHEN NOT MATCHED THEN INSERT (id, somefield) VALUES(id, source.somefield)
WHEN NOT MATCHED BY source THEN DELETE;
SELECT * FROM @sourceTable
SELECT * FROM @targetTable