SQL Server中Sheet表数据迁移至Lead表的通用脚本编写方法
SQL Server 数据迁移脚本(Sheet → Lead)
需求说明
将Sheet表数据迁移至Lead表,需满足:
- Sheet表的首个记录(按Sheet表ID升序排序)迁移后,成为Lead表的最后一条记录(ID值最大)
- Lead表的ID为自增列,插入时自动生成新ID
实现脚本
BEGIN TRANSACTION; BEGIN TRY -- 声明变量存储Sheet表首个记录的ID DECLARE @FirstSheetId INT; -- 根据实际ID类型调整,如BIGINT、UNIQUEIDENTIFIER SELECT TOP 1 @FirstSheetId = Id FROM Sheet ORDER BY Id ASC; -- 若"首个记录"不是按ID排序,修改ORDER BY规则,比如按创建时间 -- 先插入Sheet表中除首个记录外的所有数据 INSERT INTO Lead (Col1, Col2, Col3) -- 替换为Lead表中ID外的实际列名 SELECT Col1, Col2, Col3 -- 替换为Sheet表对应列名,需与Lead表列顺序、类型匹配 FROM Sheet WHERE Id != @FirstSheetId; -- 最后插入Sheet表的首个记录,此时Lead自增ID会自动生成本次迁移的最大值 INSERT INTO Lead (Col1, Col2, Col3) SELECT Col1, Col2, Col3 FROM Sheet WHERE Id = @FirstSheetId; COMMIT TRANSACTION; PRINT '数据迁移完成,Sheet首个记录已成为Lead表最后一条记录'; END TRY BEGIN CATCH ROLLBACK TRANSACTION; PRINT '迁移失败,错误信息:' + ERROR_MESSAGE(); END CATCH
注意事项
- 需根据实际表结构,替换脚本中的
Col1, Col2, Col3为两张表中除ID外的真实列名,保证列顺序、数据类型完全匹配 - 若Sheet表的“首个记录”定义不是按ID升序,修改
ORDER BY Id ASC为实际规则(如ORDER BY CreateTime ASC) - 迁移前建议备份两张表的数据,避免意外数据丢失
- 若Lead表已有存量数据,脚本会在现有数据后追加迁移内容,Sheet首个记录仍为本次迁移数据中的最后一条
内容的提问来源于stack exchange,提问作者Iiam Liamm
相关产品推荐
相关产品推荐

