循环浏览多个非结构化txt文件,使用数据本地填充将其插入MySql
我在一个目录中有多个txt文件,我想将它们全部插入mysql;显示的每个文件的内容应占据一行。在MySQL中,我有两列:ID auto increment和LastNamenvarchar45。首先,我使用insert into,我得到的错误是我不能插入太多的行!然后,我使用了下面的代码,但它给出了错误1064。代码如下:循环浏览多个非结构化txt文件,使用数据本地填充将其插入MySql,mysql,python-3.x,Mysql,Python 3.x,我在一个目录中有多个txt文件,我想将它们全部插入mysql;显示的每个文件的内容应占据一行。在MySQL中,我有两列:ID auto increment和LastNamenvarchar45。首先,我使用insert into,我得到的错误是我不能插入太多的行!然后,我使用了下面的代码,但它给出了错误1064。代码如下: import MySQLdb import sys import os result = os.listdir("path") for x in result: db
import MySQLdb
import sys
import os
result = os.listdir("path")
for x in result:
db = MySQLdb.connect("localhost","root","password","myblog")
cursor = db.cursor()
file = os.path.join('path\\'+x)
cursor.execute("LOAD DATA LOCAL INFILE file INTO clamp_test(ID, LastName)");
file.close()
db.commit()
db.close
你能告诉我我做错了什么吗?这是将非结构化文件的多行插入MySql的正确方法吗?一个问题是包含SQL文本的字符串文本
"LOAD DATA LOCAL INFILE file INTO ..."
^^^^
在这里,文件只是文本字符串中的字符。它不是要计算的变量的引用
我们需要发送到MySQL的SQL语句需要如下所示
LOAD DATA LOCAL INFILE '/mydir/myfile.txt' INTO ...
^^^^^^^^^^^^^^^^^^^
在代码中,我们希望执行的是对变量文件求值,求值结果将其合并到SQL文本字符串中
大概是这样的:
"LOAD DATA LOCAL INFILE '%s' INTO ... " % (file)
操作系统错误代码64:计算机不在计算机上network@Sammitch; 我的错!那是1064年。它说语法不正确,但我仔细检查了一下,结果是正确的。然后斯宾塞的回答就是你想做的。谢谢!但我仍然收到相同的错误:cursor.executeLOAD数据本地填充“%s”到表clamp\u测试%file1;错误代码仍然是1064@斯宾塞7593这是python代码,不是吗?似乎你错过了终止字符串的双引号。%文件位不是字符串文字的一部分,这是一些python语法,用于计算变量并将其固定到字符串中,类似于C或perl或bash sprintf函数。不要将%s发送到MySQL。MySQL不知道该怎么做。向MySQL发送一个实际的文件名。。。将“/mydir/myfile.txt”填充到。。。