mysql导出csv性能_mysql导出csv文件(百万级数据) 心得

1,某列存在0开头的数值(如果是字符没事如:000x;如果是数值有事如:0001),导出时数值消失,怎么办?

需要先将该列的值修改为“制表符tab+值”,sql语句如下:update gf_goods  set number=CONCAT("    ",number) ;

好处:

1.1,对其他字段的影响降到最低(分隔符不变,不会错分单元格);

1.2,不影响排序orderby;

2,导出文件存在乱码怎么办??

数据库存值有三种可能:英文、中文、外文(如日文等),csv文件默认编码是gbk;

两种方法:

2.1,用编辑器手动打开后改编码然后存储,效果完美;

2.2,导出的sql语句增加CHARACTER SET gbk,外文会变成???;

3,mysql直接导出csv文件,用sql速度超级超级快(绝对爽),导出文件的sql语句如下:

SELECT    id,number,price,NAME FROM gf_goods order by number asc LIMIT 0,10 INTO OUTFILE 'd:/7.csv' CHARACTER SET gbk FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\"' LINES TERMINATED BY '\r\n';

注意:如果报错说是INTO OUTFILE的路径有问题或者未设置,则修改my.ini,增加一行:secure_file_priv='D:/';

4,有时候会发现导出10条数据,csv怎么才9行?

两种可能性:

4.1,因为乱码导致2行合并,采用2.2方案后解决;

4.2,因为双引号",增加ESCAPED BY '\"'后解决;

mysql导出xls文件

1,mysql直接导出xls文件,用sql速度比导出csv更快,导出文件的sql语句如下:

SELECT    id,number,price,NAME FROM gf_goods order by number asc LIMIT 0,10 INTO OUTFILE 'd:/1.xls' CHARACTER SET gbk ;

2,导出xls和导出csv,其实质是一样的(都是往txt文本里写内容),上限数量也是一样的,区别在于:

2.1,存在0开头的数值时,如采用类似csv解决方案,则生成文件有一列的值是\,需要手动删除;

2.2,不需要双引号作为包围符号,用编辑器观察生成文件能够观察到效果;

3,mysql直接导出xls文件,不能导出xlsx文件(我没试出导出xlsx效果),我使用navicat软件,能够导出xlsx文件,但是上限数量是26w;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值