文件夹批量导入多个txt文件到mysql及问题解决

来源:互联网 发布:pc手机微信三合一源码 编辑:程序博客网 时间:2024/05/01 13:16

很多时候需要从一个文件夹导入多个格式已经固定的txt文件到mysql数据库的一个表中,解决办法分为 “导入一个txt文件到mysql”和“导入多个txt文件”两个步骤。

1:导入一个txt文件到mysql

在test数据库建立user表,编码格式为utf-8.
建表语句:

CREATE TABLE user ('username' varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,'pwd'  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL )ENGINE=InnoDBDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ciROW_FORMAT=COMPACT;

要导入的txt文件:user.txt;文件的字段以Tab分隔。
这里写图片描述

导入代码:

load data infile "文件路径" into table 表名;

示例如下:

mysql \bin\mysql -u root -ppassworduse test;load data infile "D:/test/user.txt" into table user;

如果以|或,作为分隔符,导入代码为:

load data infile "文件路径" into table 表名 fields terminated by '|';  或','

错误:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘user’ at line 1
解决方法:

mysql --local-infile -u root –ppasswordload data local infile " D:/test/user.txt " into table user;

错误:
ERROR 1300 (HY000): Invalid utf8 character string: ”,因为有中文字符。
解决方法:
(1)将txt改为utf-8格式
这里写图片描述
(2)执行语句:

load data local infile " D:/test/user.txt " into table user;

即可导入成功。

这里写图片描述

2:导入多个txt文件

想要批量导入txt文件,可以将通过批处理文件执行多条导入语句完成。
(1)制作sql语句文件,可采用多种编程语言获取要导入的txt文件名称制成sql命令。
这里采用python完成,建立python文件create_sql.py,示例代码:

import globwriteFile = open(' D:/result /user_sql.txt','w')writeFile.write('use test;\n')for filename in glob.glob(r' D:/test /*.txt'):writeFile.write('load data local infile '+'"'+filename.replace('\\','/')+'"'+' into table user;\n')writeFile.close()

这样就将test文件夹下的所有要导入的txt文件名称制作成sql语句放在user_sql.txt中,内容大致如下:

use test;load data local infile " D:/test/user.txt" into table user;load data local infile " D:/test/user2.txt" into table user;load data local infile " D:/test/user3.txt" into table user;……

(2) 制作.bat批处理文件执行(1)生成的sql命令文件。
若.bat文件放在桌面,其内容示例如下:

python D:\python\create_sql.pymysql--local-infile -u root –ppassword < D:/result /user_sql.txtpause

目的是为了先执行.py文件生成sql命令文件,再执行sql命令导入所有的文件。

运行.bat文件即可向mysql导入全部的txt文件。

1 1