文件夹批量导入多个txt文件到mysql及问题解决
2016-12-27 15:40
831 查看
很多时候需要从一个文件夹导入多个格式已经固定的txt文件到mysql数据库的一个表中,解决办法分为 “导入一个txt文件到mysql”和“导入多个txt文件”两个步骤。
建表语句:
要导入的txt文件:user.txt;文件的字段以Tab分隔。
导入代码:
示例如下:
如果以|或,作为分隔符,导入代码为:
错误:
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
解决方法:
错误:
ERROR 1300 (HY000): Invalid utf8 character string: ”,因为有中文字符。
解决方法:
(1)将txt改为utf-8格式
(2)执行语句:
即可导入成功。
(1)制作sql语句文件,可采用多种编程语言获取要导入的txt文件名称制成sql命令。
这里采用python完成,建立python文件create_sql.py,示例代码:
这样就将test文件夹下的所有要导入的txt文件名称制作成sql语句放在user_sql.txt中,内容大致如下:
(2) 制作.bat批处理文件执行(1)生成的sql命令文件。
若.bat文件放在桌面,其内容示例如下:
目的是为了先执行.py文件生成sql命令文件,再执行sql命令导入所有的文件。
运行.bat文件即可向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文件。
相关文章推荐
- 用SQL语句解决mysql导入大数据文件的问题
- 解决MySQL导入备份文件到新数据库乱码问题
- 解决mysql无法导入本地文件的问题
- PowerDesigner导入mysql文件注释丢失问题解决
- SQLServer 2008 导入txt文件,中文乱码问题解决办法
- 将txt文件内容导入mysql中,出现invalid utf8 character string错误的解决
- mysql 实现批量导入,并解决中文乱码问题
- Mysql----数据库导入文件过大问题的解决方法
- Mysql导入大文件及导入中文乱码问题解决
- MySql使用全记录5 -----解决Windows下用命令导入sql文件时"Failed to open file"的问题
- MySQL导入大sql 文件大小限制问题的解决
- 解决MySQL导入文件问题(The selected file was generated by mysqldump and cannot be restored by this applicati)
- MySQL导入大sql 文件大小限制问题的解决
- txt数据文件 l批量导入mysql
- mysql使用load导入csv文件所遇到的问题及解决方法
- 解决 将txt文件导入到sqlserver中乱码问题
- mysql导入大型的sql文件遇到问题及解决办法
- 解决txt文件中数据带有日期类型导入oracle中到不进去的问题