通过嵌入查询在Python脚本中将CSV文件导入MySQL数据库
我有一个SQL查询,它可以打开一个csv文件,并把内容放到数据库的一个表里。我想用一个Python脚本一次性处理多个文件,所以我让脚本循环遍历这些文件。我尝试把同样的SQL查询放到脚本里,但结果出现了错误。
这是我写的脚本。
import csv
import MySQLdb
connection = MySQLdb.connect(host='localhost',
user='root',
passwd='password',
db='some_db')
cursor = connection.cursor()
query = """ LOAD DATA INFILE 'c:\\example.csv' INTO TABLE new_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' Lines terminated by '\n' IGNORE 1 LINES """
cursor.execute(query)
conenction.commit()
cursor.close()
而且出于某种原因,Python脚本在查找example.csv时,找到了一个不同的位置。
这是出现的错误信息:
raise errorclass, errorvalue
InternalError: (29, "File 'C:\\Documents and Settings\\All Users\\Application Data\\MySQL\\MySQL Server 5.5\\data\\example.csv' not found (Errcode: 2)")
如果有人能帮忙,我会非常感激。我也在StackOverflow上寻找帮助,想把csv文件放到数据库的不同表里。对此有什么想法吗?
2 个回答
0
注意你的拼写!应该是 connection.commit(),而不是 conenction.commit()
1
你可能需要使用 load data local
这个语法,这样可以确保数据是从客户端读取的,而不是从服务器上读取的。把
query = """ LOAD DATA INFILE 'c:\\example.csv' INTO TABLE new_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' Lines terminated by '\n' IGNORE 1 LINES """
改成
query = """ LOAD DATA LOCAL INFILE 'c:\\example.csv' INTO TABLE new_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' Lines terminated by '\n' IGNORE 1 LINES """