使用Python文件中的pyodbc包将大量数据从一个表插入到另一个表并在移动后同时删除

问题描述 投票:0回答:1

我正在尝试使用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 数据。

python sql sql-server pyodbc
1个回答
0
投票

您可以使用 DELETE 的 OUTPUT 作为 INSERT 的源。 EG

delete from TableA
output deleted.*
into TableB
where SomeColumn='20101229'
© www.soinside.com 2019 - 2024. All rights reserved.