Python 如何在插入仍在进行时检查插入到表中的行数

Python 如何在插入仍在进行时检查插入到表中的行数,python,pandas,oracle,Python,Pandas,Oracle,我有一个数据框,有400万行和53列。我正在尝试将数据帧写入oracle表。下面是我用python编写的代码片段 import pandas as pd import cx_Oracle conn = (--------------) df = pd.read_sql(------) #write to oracle table df.to_sql(---) 这段代码已经运行了三天多,看不到尽头。请问我怎样才能得到插入的进度 PS:我的连接工作正常,我已经确认“to_sql()”工作正常,因

我有一个数据框,有400万行和53列。我正在尝试将数据帧写入oracle表。下面是我用python编写的代码片段

import pandas as pd
import cx_Oracle
conn = (--------------)
df = pd.read_sql(------)

#write to oracle table
df.to_sql(---)
这段代码已经运行了三天多,看不到尽头。请问我怎样才能得到插入的进度

PS:我的连接工作正常,我已经确认“to_sql()”工作正常,因为我在一个有10行的数据帧上尝试了它,它工作正常

已编辑: 谢谢大家,这很有帮助。
str
进行显式转换,我的代码在26分钟内执行

如果目标表上存在表锁,则可以检查插入是否已在运行,或者它仍然是pd.read\u sql。如果运气不好,您仍在从数据库加载数据。在这里,您应该检查使用下推技术是否更快。从数据库中取出所有数据以将其插入回数据库有时会很慢

检查会话没有帮助,因为您可能正在逐个插入行。。。 我不知道在插入过程中是否填充了表的撤消/重做或最终段。但您的oracle数据库似乎相当大,因此可能有人可以帮助您

下次在执行如此大的操作时,您应该使用一些附加参数

->通过在数据上迭代读取。。。读取总共4 GB的数据应该是可能的,但是分割成部分会更快

think of using parameter chunksize 

正如@lekz所写的那样,使用chunksize,但是在执行许多插入操作时,您还应该

think of using parameter method ('multi' or callable) + chunk size

这也会提高速度

您是否尝试打开到oracle db的并行连接,并读取您正在使用pandas将数据放入的表?我指的是在不中断当前进程的情况下执行的另一个脚本。除非已提交insert,否则并行连接将看不到任何内容,@Aerials.能否向我们展示您在df.to_sql方法中使用的参数?@Aerials df_all.to_sql('table_name',con e,if_exists='replace',chunksize=10000,index=False)