Python ';多';使用sqlalchemy将数据加载到Oracle数据库时不允许使用方法

Python ';多';使用sqlalchemy将数据加载到Oracle数据库时不允许使用方法,python,oracle,sqlalchemy,etl,Python,Oracle,Sqlalchemy,Etl,我正在使用sqlalchemy和pandas将dataframe加载到Oracle数据库。因为“multi”方法允许批量上传,所以我选择了这种方法。我的熊猫版本是1.0.1。但是我得到的错误如下: 具有当前数据库版本设置的“oracle”方言不支持就地多行插入。 到目前为止,我没有看到任何帖子有同样的问题。你知道怎么解决这个问题吗? 附言:当我消除multi方法时,代码就起作用了。但是,对于10条记录,运行需要2分钟。那太贵了。我的表将有4000条记录。这就是我在Python上寻找快速加载方法的

我正在使用sqlalchemy和pandas将dataframe加载到Oracle数据库。因为“multi”方法允许批量上传,所以我选择了这种方法。我的熊猫版本是1.0.1。但是我得到的错误如下:

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

到目前为止,我没有看到任何帖子有同样的问题。你知道怎么解决这个问题吗?
附言:当我消除multi方法时,代码就起作用了。但是,对于10条记录,运行需要2分钟。那太贵了。我的表将有4000条记录。这就是我在Python上寻找快速加载方法的原因。谢谢

正如Chris提到的,我使用的是批量加载


这非常有效。如果上载的记录数相同,我将从120秒减少到5秒。

Oracle客户端库和Oracle DB的版本是什么?FWIW,批量加载的cx_Oracle文档是,如果您需要转到原始cx_Oracle。我将批量加载作为附加文档。事实上,它减少了95%的时间。我将坚持这项建议。ThanksIt很有意思,这是必需的,因为pandas+sqla应该默认使用ExecuteMay,我想。@IljaEveriläI也面临类似的问题。这是否意味着由于cx_oracle中的一些限制,sqlalchemy不能支持oracle的多个插入?是的,sql+pandas应该运行得更快。我在不同的论坛上读了很多帖子。到目前为止,他们提到了fast_ExecuteMy,以促进上传过程。虽然
fast\u executemany
选项是用于pyodbc驱动程序的,但它对我不起作用@不幸的是,我对Oracle或SQLA的方言实现还不够熟悉,无法回答这个问题。
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')
> cursor.executemany("insert into Table values (:1, :2)", dataToInsert')