我正在尝试使用SQL Server和Python来执行数据迁移和删除。 然而,在执行过程中,我发现很难协调在循环中插入新表的数据也在移动相同的数据并在批量 1000 中删除相同的数据。我的意思是确切的行。
在我的下面的代码中,有一个循环将数据插入到新表中,并且下面的语句删除了该批量大小的记录。
While True:
query = f"insert into [{table_name1}] ({column_names})" \
f" SELECT {column_names}" \
f"FROM {database}.{table_name2}" \
f"WHERE {table_name1.date} = '{table_name2.date}'" \
try:
cursor.execute(query)
cursor.commit()
except:
break
delete_query = f"DELETE FROM {database}.{table_name2} where {table_name1.date} = '{table_name2.date}"
cursor.execute(query)
cursor.commit()
我的问题是移动和删除运行良好。但是,我想设置一个条件,其中移动的行是在 1000 循环中唯一被删除的行。
上面的代码是在同一日期插入 x 并删除 y 数据。
您可以使用 DELETE 的 OUTPUT 作为 INSERT 的源。 EG
delete from TableA
output deleted.*
into TableB
where SomeColumn='20101229'