load data 可以将文件中的数据导入到表中,这种导入方法快速,高效.
但是很容易出错,用法也比较复杂。需要额外定定义行分隔符,列分隔符.不同的格式文件,行,列分隔符的表示方式不一样。
但是load data 的默认行列分隔符和txt的文件一样,所以为了少出错,
最好使用与txt文件导入 常规使用方法如下
load data local infile '/home/dwchaoyue/Test.txt'
IGNORE into table TestTableCHARACTER 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):表列名 参考链接如下:
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 :指定一下编码就行
参考链接: