Python将一组.csv文件加载到MySQL中

Python将一组.csv文件加载到MySQL中,python,mysql,sql,database,csv,Python,Mysql,Sql,Database,Csv,我使用下面的命令将多个.csv文件加载到Mysql数据库中,但在(空闲窗口)上没有收到错误,数据也没有加载 这是错误的脚本 #!C:\Python27\python.exe 导入MySQLdb 导入操作系统 导入字符串 #开放数据库连接 db=MySQLdb.connect(host=“localhost”,port=3307,user=“root”\ passwd=“gamma123”,db=“测试”) cursor=db.cursor() l=os.listdir(“.”) 对于l中的文件名

我使用下面的命令将多个.csv文件加载到Mysql数据库中,但在(空闲窗口)上没有收到错误,数据也没有加载

这是错误的脚本

#!C:\Python27\python.exe
导入MySQLdb
导入操作系统
导入字符串
#开放数据库连接
db=MySQLdb.connect(host=“localhost”,port=3307,user=“root”\
passwd=“gamma123”,db=“测试”)
cursor=db.cursor()
l=os.listdir(“.”)
对于l中的文件名:
打印文件名
cursor=db.cursor()
如果(文件名.find(“DIV.csv”)>-1):
#正在测试的查询
sql=“”加载数据本地填充文件\u名称\
进入工作表系统\
以“,”结尾的字段\
可选地由“”括起\
以“\r\n”结尾的行\
忽略1行;;"""
尝试:
#执行SQL命令
cursor.execute(sql)
#提交数据库中的更改
db.commit()
除:
#如果出现任何错误,请回滚
db.rollback()
#断开与服务器的连接
db.close()
但是当我尝试使用下面的python脚本加载单个文件时,它就可以正常工作了。 请帮忙

#!C:\Python27\python.exe
导入MySQLdb
导入操作系统
导入字符串
#开放数据库连接
db=MySQLdb.connect(host=“localhost”,port=3307,user=“root”\
passwd=“gamma123”,db=“测试”)
cursor=db.cursor()
#正在测试的查询
sql=“”加载数据本地填充'axe.csv'\
进入工作表系统\
以“,”结尾的字段\
可选地由“”括起\
以“\r\n”结尾的行\
忽略1行;;“”“
尝试:
#执行SQL命令
cursor.execute(sql)
#提交数据库中的更改
db.commit()
除:
#如果出现任何错误,请回滚
db.rollback()
#断开与服务器的连接
db.close()

if(file\u name.find(“DIV.csv”)>-1):
除非您的所有文件实际上都被称为DIV.csv,否则应该是
if(file\u name.find(.csv”)>-1:
(顺便说一句,这可能会更有效地测试文件名的最后四个字母)

if(file\u name.find(“DIV.csv”)>-1):
除非您的所有文件实际上都被称为DIV.csv,否则应该是
如果(file\u name.find(.csv”)>-1:
(顺便说一下,这可能会更有效地测试文件名的最后四个字母)

您需要将文件名插入到SQL字符串中;您只需将文本
文件名
发送到服务器。您可以使用
str.format()
方法,任何
{}
占位符都可以替换为您选择的变量

您还必须缩进
try
块,除非
块位于
for
循环中:

sql=“”加载数据本地填充“{}”
进入工作表系统
以“,”结尾的字段
可选地由“”括起
以“\\r\\n”结尾的行
忽略1行;;"""
对于l中的文件名:
打印文件名
如果文件_name.endswith('DIV.csv'):
尝试:
cursor=db.cursor()
cursor.execute(sql.format(文件名))
db.commit()
除例外情况外:
#如果出现任何错误,请回滚
db.rollback()
cursor.execute()
方法通过插入
file\u name
变量的
sql
字符串传递。在将sql语句传递给MySQL之前,第一行的
{}
部分(
LOAD DATA LOCAL infle'{}'
)将被
file\u name
中的值替换

我还简化了文件名测试;假设文件名以
DIV.csv
结尾就足够了

请注意,使用可能更容易;您可以通过以下方式获得完全相同的结果:

mysqlimport --fields-terminated-by=, --fields-optionally-enclosed-by=\" \
            --local --lines-terminated-by=\r\n --user=root --password=gamma123 \
            test *DIV.csv

您需要将文件名插入到SQL字符串中;您只需将文本
文件名
发送到服务器。您可以使用
str.format()
方法,任何
{}
占位符都可以被您选择的变量替换

您还必须缩进
try
块,除非
块位于
for
循环中:

sql=“”加载数据本地填充“{}”
进入工作表系统
以“,”结尾的字段
可选地由“”括起
以“\\r\\n”结尾的行
忽略1行;;“”“
对于l中的文件名:
打印文件名
如果文件_name.endswith('DIV.csv'):
尝试:
cursor=db.cursor()
cursor.execute(sql.format(文件名))
db.commit()
除例外情况外:
#如果出现任何错误,请回滚
db.rollback()
cursor.execute()
方法传递
sql
字符串,并插入
文件名
变量。在将SQL语句传递给MySQL之前,第一行的
{}
部分(
加载数据本地填充'{}'
)将被
文件名中的值替换

我还简化了文件名测试;假设文件名以
DIV.csv
结尾就足够了

注意,它可能只是更容易使用;您可以通过以下方式获得完全相同的结果:

mysqlimport --fields-terminated-by=, --fields-optionally-enclosed-by=\" \
            --local --lines-terminated-by=\r\n --user=root --password=gamma123 \
            test *DIV.csv