当涉及到大量DB插入时,我正在研究Turbodbc是否能够为我们解决问题。我们谈的是数以百万计的批量插入。目前,它比我尝试过的任何其他解决方案都慢得多,例如mongodb插入和熊猫的to_sql函数。我不确定我是不是错过了一个设置或某些特定的东西。有没有人有过Turbodbc的经验,也许也经历过同样的问题?
代码的要点如下
import turbodbc
connection = turbodbc.connect('astcdr', turbodb_options=options)
cursor = connection.cursor()
cursor.fast_executemany = True
// *** Measuring duration of operation
// Loading a big CSV
// *** Measuring duration of operation
// Mutate some data
// *** Measuring duration of operation
// Build the sql
// *** Measuring duration of operation
....
// Execute
cursor.executemany(sql, dataArray) <- this operation takes long
// *** Measuring duration of operation 我的odbc.ini文件如下所示
[astcdr]
Description=MySQL connection to database
Driver=MySQL
Database=test
Server=mysql_container
User=test
Password=test
Port=3306我的odbcinst.ini看起来如下
[ODBC Drivers]
MySQL ODBC 8.0=Installed
[MySQL]
Driver=/var/www/mysql-connector-odbc-8.0.19-linux-debian10-x86-64bit/lib/libmyodbc8w.so
UsageCount=2我安装了下面的文件,其中pybind11在码头构建过程中失败了,但是当我挂载容器时就安装了它。
pybind11
pandas
numpy
pyarrow
pytest
pytest-cov
mock
six
turbodbc由于结果在我的mac上是一样的,而且在一个被篡改的env中,我要么在设置它时犯了同样的错误,要么Turbodbc没有按照我认为的那样工作。有人有什么建议吗?
谢谢
发布于 2020-01-27 21:30:17
有两件事你应该知道:
parameter_sets_to_buffer设置,如https://turbodbc.readthedocs.io/en/latest/pages/advanced_usage.html中所描述的。增加这一点可能会增加throughput.turbodbc驱动程序要好,后者有时会非常慢,因此turbodbc不会对您有所帮助。turbodbc将给您带来与pyodbc相比的加速功能,但要求ODBC驱动程序本身已经是高效的。https://stackoverflow.com/questions/59902075
复制相似问题