使用python脚本中的嵌入式查询将CSV文件转储到MySQL数据库

时间:2013-02-12 14:28:55

标签: python mysql csv python-2.7

我有一个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文件转储到数据库的不同表中。有什么想法?

2 个答案:

答案 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()