通过嵌入查询在Python脚本中将CSV文件导入MySQL数据库

0 投票
2 回答
1203 浏览
提问于 2025-04-17 15:37

我有一个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 """

撰写回答