SELECT...INTO OUTFILE导出数据到文件
使用SELECT...INTO OUTFILE可以导出数据到文件,同时指定每个字段的分隔符和每行的换行符,如下,
mysql> select id, name, price from book into outfile '/tmp/book_data.txt' fields terminated by',' lines terminated by '\r\n';Query OK, 4 rows affected (0.00 sec)mysql>
如下是文本中数据的格式,
1,Hello World,1.22,hello world book,1.23,hello world book,1.24,hello world book,1.2
可以看到使用逗号来分隔每个字段,换行符是\r\n。
但有时候登录不到数据库的主机上,可以使用mysql -e命令导出我们想要的数据,如下,
➜ ~ mysql -h localhost -u root -p034039 -e 'select id, name, price from account.book' > book_data.txtmysql: [Warning] Using a password on the command line interface can be insecure.
其实这使用的Linux的IO重定向。打开文件,可以看到如下数据,
id name price1 Hello World 1.22 hello world book 1.23 hello world book 1.24 hello world book 1.2
其实就是sql->select id, name, price from account.book的查询结果,然后输出到文件中的。 但是字段的分隔还不是很清晰明了,那怎么办? 可以通过concat 函数连接多个字段为一行,然后中间加上分隔符,这样就清晰了,这样写sql,如下,
➜ ~ mysql -h localhost -u root -p034039 -e 'select concat(id,"|",name,"|",price) from account.book' > book_data.txtmysql: [Warning] Using a password on the command line interface can be insecure.
输出的文件格式为:
concat(id,"|",name,"|",price)1|Hello World|1.22|hello world book|1.23|hello world book|1.24|hello world book|1.2
========END========