我正在研究 Turbodbc 是否可以为我们解决大量数据库插入问题。我们正在谈论数百万个批量插入。目前,它比我尝试过的任何其他解决方案都要慢得多,例如 mongodb 插入和 pandas 的 to_sql 函数。我不确定我是否缺少设置或特定内容。有没有人有使用 Turbodbc 的经验并且可能遇到过同样的问题?
- 我已经在 mac 以及 dockerised debian(buster) 环境上尝试过。
- 我尝试过executemanycolumns,以及executemanywith一个sql查询,都很慢。
- 我已经安装了unixodbc
对于 debian,我正在使用这些 MySQL ODBC 驱动程序
代码要点如下
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
我 pip install 以下,其中 pybind11 在 docker build 期间失败,但是在我挂载容器时安装了它。
pybind11
pandas
numpy
pyarrow
pytest
pytest-cov
mock
six
turbodbc
由于结果在我的 mac 和 dockerised 环境中是相同的,因此我在设置它时犯了两次相同的错误,或者 Turbodbc 只是没有按照我认为的方式工作。Deos有人有什么建议吗?
谢谢