Skip to main content
 首页 » 编程设计

python之将数据从 oracle 提取到 python pandas dataframe 非常慢

2025年05月04日13exmyth

我正在尝试使用 cx_Oracle 模块将数据从 Oracle 数据库中提取到 Pandas 数据框中。

如下使用fetchall()函数时

cursor = con.cursor() 
cursor.arraysize = 1000 
results = cursor.execute("select * from TABLE1") 
rows = results.fetchall() 

提取速度与使用R Oracle库提取非常相似,约为8秒(数据大小约为750,000行和30列混合数据类型)

但是当使用 Pandas read_sql 函数将其导入数据框时,性能要差得多

df = pd.read_sql('select * from TABLE1',con) 

使用此功能时,大约需要 30 秒。

我可以做些什么来优化数据框的导入吗?

请您参考如下方法:

试试这个:

df_list = [] 
for chunk in pd.read_sql_query(sql , conn, chunksize=10): 
    df_list.append(chunk) 
frames=pd.concat(df_list, ignore_index=True) 

也可以使用pandas.io.sql.read_sql