我需要使用脚本将存储在一个表中的某些数据移动到另一个表中,同时考虑到可能已存在于目标表中的现有记录以及可能存在于存在。安全地将行数据从一个表插入到另一个表中 - SQL
我很想知道这样做的最佳方法,对性能的影响相对较小,必要时可以逆转。
起初我只会移动一条记录以确保流程顺利运行,但是它将负责移动1650行左右。
什么是最好的方法或有更好的选择?
编辑:
我以前使用合并,我会在SQL Server 2005环境下操作将无法正常工作的建议,而不是像2008年之前提到的。
我需要使用脚本将存储在一个表中的某些数据移动到另一个表中,同时考虑到可能已存在于目标表中的现有记录以及可能存在于存在。安全地将行数据从一个表插入到另一个表中 - SQL
我很想知道这样做的最佳方法,对性能的影响相对较小,必要时可以逆转。
起初我只会移动一条记录以确保流程顺利运行,但是它将负责移动1650行左右。
什么是最好的方法或有更好的选择?
编辑:
我以前使用合并,我会在SQL Server 2005环境下操作将无法正常工作的建议,而不是像2008年之前提到的。
的问题并没有提供任何细节,所以我不能提供任何实际真正代码,只是这个计划攻击:
第1步编写一个查询,将只选择需要复制的行。您需要JOIN
和/或过滤(WHERE
)此数据以仅包含目标表中尚不存在的行。按列顺序和数据类型使列列表与列表中的列完全相同。
步骤2反过来由之前选择加入INSERT YourDestinationTable (col1, col2, col3..)
SELECT语句入的插入件。
第3步,如果你只是想尝试单行,增加TOP 1
新INSERET - SELECT command
的选择部分,您可以根据需要与重新运行此命令多次/无TOP
,因为它应该消除任何您在JOIN
■添加和WHERE
条件到底SELECT
行,你得东西,看起来像:
INSERT YourDestinationTable
(Col1, Col2, Col3, ...)
SELECT
s.Col1, s.Col2, s.Col3, ...
FROM YourSourceTable s
LEFT OUTER JOIN SomeOtherTable x ON s.Col4=x.Col4
WHERE NOT EXISTS (SELECT 1 FROM YourDestinationTable d WHERE s.PK=d.PK)
AND x.Col5='J'
我读了一个问题,只将源表中缺失的行插入到目标表中。如果更改需要进行迁移,那么在执行上述步骤之前,您需要执行目标表的UPDATE
加入源表。如果没有更具体的实际表格,栏目等,这很难解释。
是,MERGE语句是理想的批量导入,如果你正在运行SQL Server 2008的
感谢您的信息KM! –
要回答你的问题,我只会插入不存在的行,之后不需要使用类似的方法更新任何内容。 –