在mysql中导出数据有一个非常简单的命令 into outfile可以快速的把数据记录导出成xls文件哦,有需要的朋友可参考。
代码如下 | 复制代码 |
mysql>select * from xi_table into outfile ’d:test.xls’; |
导出为txt文件:
代码如下 | 复制代码 |
select * from xi_table into outfile ’d:test.txt’; |
默认使用tab分割字段,记录使用n分割。可以自定义三个参数。
代码如下 | 复制代码 |
SELECT * FROMhx_9enjoy INTO OUTFILE '/tmp/9enjoy_hx.txt' FIELDS TERMINATED BY ',' OPTIONALLYENCLOSED BY '"' LINES TERMINATED BY 'n'; |
即使用,分割字段,双引号限定字段内容,n分割记录。
还可以指定某些条件的记录输出:
代码如下 | 复制代码 |
SELECT * FROMhx_9enjoy WHERE id |
如果打开时excel中出现乱码我们可以导出时设置编码为gb2312 在服务器端使用iconv来进行编码转换:
代码如下 | 复制代码 |
iconv -futf8 -tgb2312 -otest2.xls test.xls |
如果linux中可能会碰到mysql into outfile ERROR : Can't create/write to file 错误,这种问题就是权限的问题了
解决办法
代码如下 | 复制代码 |
sudo vi /etc/apparmor.d/usr.sbin.mysqld |
在里面添加/data的可写目录,如下:
代码如下 | 复制代码 |
... /usr/sbin/mysqld { ... /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, /data/* rw, } |
然后重新载入:
代码如下 | 复制代码 |
sudo /etc/init.d/apparmor reload/restart |
还需要重启mysql,否则会出些莫名其妙的错误,如:
ERROR 1286 (42000) at line 1: Unknown table engine 'InnoDB'
重启mysql:
代码如下 | 复制代码 |
sudo service mysql stop |