使用 sqlalchemy 将数据加载到 Oracle 数据库时不允许使用“Multi”方法

2023-12-04

我正在使用 sqlalchemy 和 pandas 将数据帧加载到 Oracle 数据库。由于“multi”方法允许批量上传,因此我选择该方法。我的pandas版本是1.0.1。但是我收到以下错误:

当前数据库版本设置的“oracle”方言不支持就地多行插入。

from sqlalchemy import create_engine
oracle_connection_string = (
'oracle+cx_oracle://{username}:{password}@' +
cx_Oracle.makedsn('{hostname}', '{port}', service_name='{service_name}'))

engine = create_engine(oracle_connection_string.format(
    username='abc',
    password='123',
    hostname='bcd',
    port='1234',
    service_name='xyz.com',fast_executemany=True))
cleandata.to_sql('table', con = engine,schema = 'ht', if_exists='replace',index = False, method = 'multi')

到目前为止,我还没有看到任何帖子有同样的问题。您知道如何解决这个问题吗? P.s:当我消除方法 multi 时,代码可以工作。但是对于 10 条记录,运行需要 2 分钟。那成本太高了。我的表将有 4000 条记录。这就是为什么我在 Python 上寻找快速加载方法的原因。谢谢!


正如克里斯提到的,我使用了批量加载here.

> cursor.executemany("insert into Table values (:1, :2)", dataToInsert')

效果非常好。在上传相同数量的记录的情况下,我从 120 秒减少了 95% 到 5 秒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sqlalchemy 将数据加载到 Oracle 数据库时不允许使用“Multi”方法 的相关文章

随机推荐