【问题标题】:Extract files from an oracle database with Python使用 Python 从 oracle 数据库中提取文件
【发布时间】:2021-12-29 09:55:12
【问题描述】:

我正在使用cx_Oracle 访问 mon Oracle 数据库我一直在寻找一种从数据库中提取文件的方法,但我找不到解决方案。通过提取我的意思是下载。 这是我到目前为止得到的:

from types import prepare_class
from typing import overload
import cx_Oracle

dsn_tns = cx_Oracle.makedsn('****', '****', service_name='****')
conn = cx_Oracle.connect(user=r'****', password='****', dsn=****)

c = conn.cursor()
c.execute('my request')

for row in c:
    print (row[0], '-', row[1])
conn.close()

我不知道我是需要使用外部库还是直接使用请求。

【问题讨论】:

  • 您的意思是要查询数据库表中的所有行并将它们保存到文件中吗?什么样的文件 - CSV? several options in cx_oracle 用于获取 1 行、多行或所有行。您还可以使用 pandas 之类的库
  • ...具体是什么意思?您只需要将内容写入文件即可。
  • 有我想提取/下载的 blob 文件,但是我可以一个一个打开它们并将它们写入文件,但我不知道它是否更快,我不知道 cx_oracle 可以做吧,我会看看它是如何工作的,谢谢
  • 如果存储为 blob 的二进制文件是文本文件,您可以使用函数将 blob 转换为 clob,然后在正常提取中将 clob 作为文本下载。如果 blob 文件不同,例如图片或音频,就会出现问题

标签: python oracle cx-oracle


【解决方案1】:

如果您有一列包含名称,另一列包含文件内容,您可以执行以下操作:

for fileName,fileContents in c.execute('select fileName,file contents from the_table'):
    with open(fileName, w) as f:
        F.write(fileContents)

【讨论】:

  • 我明白了,但是当我在表中打开文件时,F.write 将遍历整个文件并将其写入另一个文件?
  • 我假设在您的表格中,您拥有要写入文件的完整文件内容。所以只有一个 f.write
猜你喜欢
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 2013-03-13
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多