您的位置:首页 > 数据库 > MySQL

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

2016-12-27 15:40 831 查看
很多时候需要从一个文件夹导入多个格式已经固定的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=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT;


要导入的txt文件:user.txt;文件的字段以Tab分隔。



导入代码:

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


示例如下:

mysql \bin\mysql -u root -ppassword
use 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 –ppassword
load 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 glob
writeFile = 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.py
mysql--local-infile -u root –ppassword < D:/result /user_sql.txt
pause


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

运行.bat文件即可向mysql导入全部的txt文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql