mysql导入csv文件出错解决办法
2016-03-30 00:53
477 查看
将*.csv文件导入mysql可使用LOAD DATA INFILE,
概要写法:
Load data in file
对于本地文件,使用 load data local infile 'D:\\filename.csv' 语法
具体语法使用可参照:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data
如果一个表中只有英文字符则导入不出现问题,写法也极其简单:
LOAD DATA LOCAL INFILE ‘D:\\ports.csv’ INTO TABLE ports;
遇到的问题一:ports.csv文件中存在中文字符,导入数据后变成乱码
首先修改表及字段的编码方式
alter table ports character set gbk2312;
alter table ports modify port_chinese varchar(50) character set gbk2312;
通过 show create table ports 查看表及字段的编码方式,当然也可以通过可视化工具修改字段的编码格式
我导入的命令行具体写法是:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by’’;
但我修改以上两项之后我导入数据依旧乱码,我的CSV文件编码格式是GBK,
在网络上找到一篇关于此问题的文章:http://www.sqlstudy.com/sql_article.php?id=2008081901,借鉴于文章中的写法修改语句如下:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports character set gbk2312 FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by ’’;
至此乱码变成了正确的中文字符。
遇到的问题二:在导入数据后查看数据时发现CSV文件中第一行有效数据丢失,而多出三行怪异的无效数据行,而且在执行导入命令时有39个警告
首先我使用SHOW WARNINGS;命令查看提示的警告内容,发现CSV文件中的列标题导入数据库中出现了N多警告,而出现数据错误的关键原因在 LINES TERMINATED BY ‘\r\n’ 这句中,因为第一行列标题并没有以回车换行字符结束,第一行标题列在转换过程出错,也导致了第一行有效数据在导入过程中出现错误。我将csv文件中文件标题的最后一列标题加上一回车后保存数据,CSV中的第一行有效数据终于导入到数据中,但却多一行标题行数据,通过IGNORE命令可解决。
最后的CSV导入命令行的写法:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports character set gbk2312 FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by ’’ IGNORE 1 LINES;
概要写法:
Load data in file
对于本地文件,使用 load data local infile 'D:\\filename.csv' 语法
具体语法使用可参照:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data
如果一个表中只有英文字符则导入不出现问题,写法也极其简单:
LOAD DATA LOCAL INFILE ‘D:\\ports.csv’ INTO TABLE ports;
遇到的问题一:ports.csv文件中存在中文字符,导入数据后变成乱码
首先修改表及字段的编码方式
alter table ports character set gbk2312;
alter table ports modify port_chinese varchar(50) character set gbk2312;
通过 show create table ports 查看表及字段的编码方式,当然也可以通过可视化工具修改字段的编码格式
我导入的命令行具体写法是:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by’’;
但我修改以上两项之后我导入数据依旧乱码,我的CSV文件编码格式是GBK,
在网络上找到一篇关于此问题的文章:http://www.sqlstudy.com/sql_article.php?id=2008081901,借鉴于文章中的写法修改语句如下:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports character set gbk2312 FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by ’’;
至此乱码变成了正确的中文字符。
遇到的问题二:在导入数据后查看数据时发现CSV文件中第一行有效数据丢失,而多出三行怪异的无效数据行,而且在执行导入命令时有39个警告
首先我使用SHOW WARNINGS;命令查看提示的警告内容,发现CSV文件中的列标题导入数据库中出现了N多警告,而出现数据错误的关键原因在 LINES TERMINATED BY ‘\r\n’ 这句中,因为第一行列标题并没有以回车换行字符结束,第一行标题列在转换过程出错,也导致了第一行有效数据在导入过程中出现错误。我将csv文件中文件标题的最后一列标题加上一回车后保存数据,CSV中的第一行有效数据终于导入到数据中,但却多一行标题行数据,通过IGNORE命令可解决。
最后的CSV导入命令行的写法:
LOAD DATA LOCAL INFILE ’D:\\ports.csv’ INTO TABLE ports character set gbk2312 FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘\r\n’ starting by ’’ IGNORE 1 LINES;
相关文章推荐
- 跟我一起学习MySQL技术内幕(第五版):(第一章学习日记4)
- mysql恢复报错 ERROR 1142 (42000)
- MySQL的两个存储引擎--MyISAM和InnoDB
- Windows环境—Mysql_5.5设置日志方法
- mysql学习笔记-索引
- MySQL的my.ini配置
- Error:MySQLAdministrator无法连接到实例
- 浅谈mysql事务
- mysql集群
- 主从 mysql (master slave) 复制原理及配置
- 采用MySQL数据连接
- MySQL性能优化的最佳经验,随时补充
- MySQL性能分析
- MySQL表类型
- 安装mysql 5.7.11,初始登录出现:mysql Access denied for user 'root'@'localhost' (using password: YES)
- mysql别名
- mysql绿色版安装使用配置教程?
- mysql字符集
- 【MySQL】结构行长度的一些限制
- mysql存储过程入门