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

很多时候需要从一个文件夹导入多个格式已经固定的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分隔。

0818b9ca8b590ca3270a3433284dd417.png

导入代码:

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格式

0818b9ca8b590ca3270a3433284dd417.png

(2)执行语句:

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

即可导入成功。

0818b9ca8b590ca3270a3433284dd417.png

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文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值