【发布时间】:2013-09-10 11:25:43
【问题描述】:
我想加载包含大量 sql 查询(插入)的文本文件并使用 Python(PYODBC) 执行它
我当前的代码如下:
cursor = cnxn.cursor()
with open('C:\Python_Script_Test\INSERTS.txt','r') as file:
var1 = file.read().replace("\r\n","")
var2 = var1
cursor.execute(var2)
file.close()
该文件中有超过 5000 行,其中的示例 INSERT 如下所示:
Insert into x (q, w, e, r, t, y, u, i, o, p, a, s, d, f, g, h, j)
VALUES (582, 'GA26', 'TMO ', 'xxx', 'xxx@example.com', '', 'NULL', 'NULL',
'', '', '', '', '', '', '', '', NULL);
错误:
pyodbc.ProgrammingError: ('42000',
"[42000] [MySQL][ODBC 3.51 Driver][mysqld-5.6.13]
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near
'insert into x
(z, b, c, d, e' at line 3 (1064) (SQLExecDirectW)")
编辑:
另一个想法:
好的,目前没有错误。当前代码如下所示:
上一个 = ''
对于 open('C:\Python_Script_Test\x.txt','r') 中的 sql_insert:
y = sql_insert.strip().replace("\r\n",";")
如果 y.startswith('insert'):
打印上一个
如果 previous.endswith(';'):
打印'测试\r\n'
cursor.execute(上一个)
上一个 = y
别的:
前一个 += y
但是,数据库中的表没有变化...
【问题讨论】:
-
文本文件中显示的示例行在
VALUES之前缺少一个右括号。从那里开始。 -
好像您在第 3 行的 INSERTS.txt 文件中有错误。
-
对了,为什么要通过Python?通常,您可以通过数据库命令行将一个包含 SQL 命令的文本文件直接插入到数据库中。
-
@Jite,这是复制粘贴错误,通常我的代码上有 '('。
-
@Evert,是的,我知道,但我必须这样做。
标签: python mysql sql insert pyodbc