这段时间比较忙,好久没有发文章了。因为手贱点了ubuntu提供的更新,然后我的wifi模块炸掉了。 重装系统都没解决。。。跑题了。数据是网上的,有很多的类型可以选择,而我对csv这种类型很有好感,就没有用excel的格式。先画个重点:
1. 数据库中要建立对应的表
举例:
CREATE TABLE test(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(10) NOT NULL,
picture_url VARCHAR(50),
number VARCHAR(25),
number1 VARCHAR(5),
inumber2 VARCHAR(5),
PRIMARY KEY ( id )
);
2. 清洗对应的数据。
我这里用了excel工具,用了vim对我的数据进行了清洗。
3.连接数据库
mysql -u root -p --local-infile=1# –后面这部分得加上,因为数据库默认是关闭local模式的。为啥要用local模式?见错误3.
4.导入
错误的sql语句
load data infile '/home/guo/needimport.csv' --CSV文件存放路径
into table student character set gb2312 --要将数据导入的表名
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n';
注释:
上面的是sql语句。csv 导入mysql 要求mysql的版本在5.1以上,如果版本不够,是不行的。但是上面的sql语句存在很多问题。解释一下:
上面的set gb2312是当你需要导入的数据中包含中文的时候,需要加上。如果没有中文就不需要。
fields terminated by “,” 是用,分割。
optionally enclosed by ’ ” ’ escaped by ’ ” ’ 就是用引号把你的每个字段给包起来。
而lines terminated by ‘\n’; 这个是用换行符换行。
在vim中,我们可以用set list查看,如果你的换行符还有\r,那你要加入进去。
现在 TAB 键显示为 ^I,而 $显示在每行的结尾
即:lines terminated by ‘\r\n’;
错误1:MySQL会提示你放到指定的目录下。
需要把你的文件放到 /var/lib/mysql-files/下面。这个是在执行sql语句之前,你就要做的。
错误2:如果你不想出现乱码问题,你需要解决编码问题。
vim 打开文件看一下文件的编码
:set fileencoding #查看当前编码
:set fileencodings=cp936 # 然后 w (存盘)一下即可转化为 ANSI 格式。
而linux 还有一种转码方式:iconv
iconv -f utf-8 -t gbk needchange.csv > output.csv
同理:
iconv -f utf-8 -t cp936 needchange.csv > output.csv
上面这个就是把utf-8转换成cp936.
而导入数据之前一定要转换成ANSI格式,否则会出现乱码。
错误3:
load data infile 其实是没法读取的,要解决需要加一个local. 也就是load data local infile。 而当你这样做的时候,你的mysql 可能会提示你,对不起,不支持。怎么办?
那就把local模式开启!
连接数据库的时候,直接加个参数即可
mysql -u root -p --local-infile=1
如果想变成经常使用的,就去修改配置文件吧
finally:
如果上面的都弄完了。下面是正确的操作方法:
load data local infile '/var/lib/mysql-files/needimport1.csv'
into table test character set gb2312
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n';
goodluck!
参考:
http://blog.youkuaiyun.com/quiet_girl/article/details/71436108
http://blog.youkuaiyun.com/china_skag/article/details/8064328
https://stackoverflow.com/questions/7638090/load-data-local-infile-forbidden-in-php/
本文详细介绍如何从CSV文件导入数据到MySQL数据库的过程,包括创建表、数据清洗、解决乱码及权限问题等步骤。
1127

被折叠的 条评论
为什么被折叠?



