我有一个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上搜索帮助将scv文件转储到数据库的不同表中。有什么想法?
答案 0 :(得分: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 """
答案 1 :(得分:0)
注意你的拼写! connection.commit()应该是connection.commit()