我希望将数据从SQLite3文件批量复制到Oracle,并使用jaydebeapi模块从jaydebeapi脚本中以编程方式这样做。(我无法控制Python + jaydebeapi的选择;它是由我正在合作的项目强加的。)
一种方法是将SQLite3表转储到临时CSV文件,并使用LOAD DATA INFILE命令读取CSV文件。
我正在寻找一种方法,以实现相同的最终结果,以避免创建中间临时文件。
更具体地说,由于我可以将SQLite3表大容量读取到内存中(使用简单的SELECT语句),我需要的是大容量写入对应程序将表从内存中转储到Oracle数据库中。
编辑:--这是一个经常性的任务。要复制的最大表通常有100 K行。
发布于 2019-06-19 22:31:37
由于这是两个不同的“数据库”,您可能需要连接到SQLLite来执行查询,并需要另一个连接到Oracle来执行插入。
在从Python应用程序中插入Oracle时,应该使用cx_Oracle模块的executemany()方法:
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
发布于 2019-06-19 03:38:27
SQLite3和Oracle表是否有相同的模式?如果他们这样做了,那么您可以尝试一些类似于这个伪代码的简单的东西。
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文档对于帮助编写解决方案都非常有用。
https://stackoverflow.com/questions/56658940
复制相似问题