0

我有13-15MB 的原始文件来将其数据加载到数据库中,使用带有 pyodbc 的executemany插入大约30k-35k行大约需要 50-55 分钟,它工作得很好,但它的处理时间很长。

为了测试性能,我尝试了 pymssql 但它在此处显示语法错误

x = [('a',1),('b',2).... ]  # inserting only 999 rows at a time
qry = "INSERT INTO ["+tablename+"] VALUES({}) ".format(placeholders)
cursor.executemany(qry,x)

print qry
 # INSERT INTO [my_T] VALUES(?,?,?,?,?,?,?,?,?,?,?,?...) 

AT executemany() 它正在抛出错误

错误:

loadData 中的错误(102,“'?'.DB-Lib 错误消息 20018 附近的语法不正确,严重性 15:\n一般 SQL Server 错误:检查来自 SQL Server 的消息\n”

4

1 回答 1

3

Python 的DB-API 2.0规范定义了实现者可以使用的几种参数样式。

pyodbc 采用了“qmark”样式,这是 ODBC 最常用的样式

INSERT INTO tablename (col1, col2) VALUES (?, ?)

而 pymssql 选择了“格式”样式

INSERT INTO tablename (col1, col2) VALUES (%s, %s)

请注意,由于历史原因,pymssql 支持%d以及%s但我们不需要%s用于字符串和%d数字;%s适用于所有情况,是首选的占位符。

于 2017-07-21T23:03:33.037 回答