首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Python的jaydebeapi批量插入Oracle数据库

通过Python的jaydebeapi批量插入Oracle数据库
EN

Stack Overflow用户
提问于 2019-06-19 01:31:26
回答 2查看 1.3K关注 0票数 0

我希望将数据从SQLite3文件批量复制到Oracle,并使用jaydebeapi模块从jaydebeapi脚本中以编程方式这样做。(我无法控制Python + jaydebeapi的选择;它是由我正在合作的项目强加的。)

一种方法是将SQLite3表转储到临时CSV文件,并使用LOAD DATA INFILE命令读取CSV文件。

我正在寻找一种方法,以实现相同的最终结果,以避免创建中间临时文件。

更具体地说,由于我可以将SQLite3表大容量读取到内存中(使用简单的SELECT语句),我需要的是大容量写入对应程序将表从内存中转储到Oracle数据库中。

编辑:--这是一个经常性的任务。要复制的最大表通常有100 K行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-19 22:31:37

由于这是两个不同的“数据库”,您可能需要连接到SQLLite来执行查询,并需要另一个连接到Oracle来执行插入。

在从Python应用程序中插入Oracle时,应该使用cx_Oracle模块的executemany()方法:

代码语言:javascript
复制
data = [
    (60, "Parent 60"),
    (70, "Parent 70"),
    (80, "Parent 80"),
    (90, "Parent 90"),
    (100, "Parent 100")
]

cursor.executemany("""
        insert into ParentTable (ParentId, Description)
        values (:1, :2)""", data)

请参阅oracle

票数 1
EN

Stack Overflow用户

发布于 2019-06-19 03:38:27

SQLite3和Oracle表是否有相同的模式?如果他们这样做了,那么您可以尝试一些类似于这个伪代码的简单的东西。

代码语言:javascript
复制
for table in sqlite3tables:
    (SELECT * FROM table)  ->  temptable
    for row in temptable
        INSERT row INTO oracletable

如果不同的数据库有不同的模式,那么您将需要以更定制的方式编写SELECT语句。

在这两种情况下,在https://www.python.org/dev/peps/pep-0249/上读取Python文档对于帮助编写解决方案都非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56658940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档