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;