load data 可以将文件中的数据导入到表中,这种导入方法快速,高效.
但是很容易出错,用法也比较复杂。需要额外定定义行分隔符,列分隔符.
不同的格式文件,行,列分隔符的表示方式不一样。

 

但是load data 的默认行列分隔符和txt的文件一样,所以为了少出错,
最好使用与txt文件导入


常规使用方法如下

 

load data local infile   '/home/dwchaoyue/Test.txt'
IGNORE  into table TestTable
CHARACTER  set utf8
IGNORE 1 LINES(Tdate,Tphone01,TgameId,Tlevel,TsndaId);


local infile:将本地文件导入到表中,
'/home/dwchaoyue/Test.txt':本地文件路径
IGNORE/REPLACE:当主键重复的时候,load程序的数据处理方式,IGNORE(忽略该行),REPLACE(替换表中的行)
CHARACTER  set utf8:导入过程中,设置字符编码,否则有可能出现乱码
IGNORE 1 LINES:跳过第一行数据,常用户跳过有列名的行
(Tdate,Tphone01,TgameId,Tlevel,TsndaId):表列名


参考链接如下:
http://www.2cto.com/database/201108/99655.html

 


mysql 数据导出 into  outfile


into outfiles 的功能刚好与load data 的功能相反

into outfile 主要用于将查询出来的结果导出到文本中

和load data一样可以任意指定行分隔符和列分隔符,

这里为了简便,就是用默认的分隔符就行了。

在实际使用中也没有必要去指定分隔符(为自己制造麻烦) 。


具体使用法:

mysql> select * into OUTFILE '/home/vip/20140828112.txt' CHARACTER  set GBK from  t_mail_new ;

Query OK, 50 rows affected (0.41 sec)


问题1:

/home/vip/20140828112.txt :本地文件路径 ,该文件必须不存在,而且mysql用户必须对/home/vip 有读写权限

如果导出报错:

mysql> select * into OUTFILE '/home/monitor/20140828112.txt' CHARACTER  set GBK from  t_mail_new

    -> ;

ERROR 1 (HY000): Can't create/write to file '/home/monitor/20140828112.txt' (Errcode: 13)


该报错表明mysql用户对目录/home/monitor 无权限 


解决方案:

chown  -R  mysql:mysql  /home/monitor


问题2:

当linux系统本身的字符编码和mysql的字符编码不一样 ,这时可能会产生乱码.

解决方案:

CHARACTER  set GBK :指定一下编码就行


参考链接:

http://www.wzxue.com/mysql%E4%B8%8Bselect-into-outfile%E5%AF%BC%E5%87%BA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E5%91%BD%E4%BB%A4/