【问题标题】:Connect to Oracle Database and export data as CSV using Python使用 Python 连接到 Oracle 数据库并以 CSV 格式导出数据
【发布时间】:2021-10-20 22:17:47
【问题描述】:

我想将 oracle 数据库连接到 python 并使用 select 语句无论我得到什么结果,我都希望将该结果导出为 sftp 位置的 csv 文件。

我知道我们可以使用 cx_oracle 包将 oracle 与 python 连接起来。

但我关心的是从 oracle 获取数据到 csv 并导出。

还要注意我的数据更大。

任何人都可以帮助我获得同样快速的解决方案。

提前致谢。

【问题讨论】:

  • 你知道如何连接数据库吗?你知道怎么查询吗?目前尚不清楚您在哪一步遇到了困难。请展示您到目前为止所做的工作。
  • 是的,我知道如何连接到数据库。我无法将结果数据(使用 cursor.execute 后从 select 语句中获得)直接导出为 CSV。希望你能明白..
  • 其实我用 mysql 和 pandas 做了同样的事情。在那种情况下,使用游标我得到了作为熊猫数据框的查询结果。我们可以导出该数据框。
  • 你能展示你用于 mysql 和 pandas 的工作代码,以及用于 Oracle 的非工作代码吗?
  • edit提问,cmets不保留代码格式。

标签: python python-3.x oracle cx-oracle


【解决方案1】:

从这样的开始,然后根据您的要求进行更改:

import cx_Oracle
import csv
import sys, os

if sys.platform.startswith("darwin"):
    cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")

connection = cx_Oracle.connect(user='cj', password='cj', dsn='localhost/orclpdb1')
cursor = connection.cursor()
cursor.arraysize = 5000

with open("testpy.csv", "w", encoding='utf-8') as outputfile:
    writer = csv.writer(outputfile, lineterminator="\n")
    results = cursor.execute('select * from all_objects where rownum < 10000000 order by object_id')
    writer.writerows(results)

特别是,您需要调整 arraysize 值。

Tuning cx_Oracle

【讨论】:

猜你喜欢
  • 2021-11-21
  • 2021-05-23
  • 2021-08-17
  • 1970-01-01
  • 2015-12-26
  • 2018-08-08
  • 2020-02-06
  • 2016-04-10
相关资源
最近更新 更多