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