诺亚方舟

沉淀

通过csv从mysql导出数据并导到另一数据库的命令

导出数据(不包含表结构):

SELECT fileds1,fileds2,fileds3 INTO OUTFILE ‘/path/to/csvfile/tmp.csv’ FIELDS TERMINATED BY ‘|’ OPTIONALLY ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘\n’ FROM table_test order by fileds1; //从mysql中导出csv文件,也可以指定导出数据量的多少,注意,这里如果是远程连到另一mysql上的话则保存的csv文件也在另一服务器上。

 

LOAD DATA INFILE ‘/path/to/csvfile/tmp.csv’ IGNORE INTO TABLE `table_test` character set utf8 FIELDS TERMINATED BY ‘|’ ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘\n’;//

加载CSV文件到mysql里面。

 

这条语句把SQL结果保存成csv文件,便于在excel下查看

select recdate,cid,uid ,CONVERT(game,CHAR(20)) as game,ip ,did,did_count INTO OUTFILE ‘/tmp/20140618repetition.csv’ FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ FROM (select concat(did,’_',cid) as d_d,recdate,cid,uid,game,ip,did from first_login_20140618 where recdate = ’2014-06-18′ and game = ’1389689822864230′ ) as a right join (select count(did) as did_count,concat(did,’_',cid)  as d_d from sy_logs.first_login_20140618 where recdate = ’2014-06-18′ and game = ’1389689822864230′ group by cid,game,ip having did_count > 1) as b on a.d_d = b.d_d;

——————————————————-分割线————————————————————-

通过load data导数据的时候出现了这样的错误,

#1045 – Access denied for user ‘user’@'localhost’ (using password: YES)

解决方案是在sql加上local关键字,这样mysql就不会通过tcp获取数据,而是从本地拉取。例如:

load data local infile ‘/tmp/co_user_test.csv’ into table test.co_user_test character set utf8 fields terminated by “,” enclo
sed by ‘”‘ lines terminated by ‘\r\n’;

——————————————————-分割线————————————————————-

注意,我们数据库如果是使用utf8字符集编码的,导出的数据如果包含了多字节数据在Windows下(GBK环境)是会乱码的(WPS会兼容编码,EXCEL没兼容编码),此时我们可以加多字符集的设置CHARACTER SET gbk,例如上面的SQL改装成:

SELECT fileds1,fileds2,fileds3 INTO OUTFILE ‘/path/to/csvfile/tmp.csv’ CHARACTER SET gbk FIELDS TERMINATED BY ‘|’ OPTIONALLY ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘\n’ ;

这样导出的数据在Windows EXCEL下就不会乱码了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>