数据的导出
在某些情况下,为了一些特定的目的,经常需要将表里的数据导出为某些符号分割的纯数据文本,而不是SQL语句。这些应用可能有以下一些:
1.用来作为EXCEL显示。
2.单纯为了节省备份空间。
3.为了快速地加载数据,LOAD DATA的加载速度比普通的SQL加载要快20倍以上。
方法一:
使用SELECT ...INTO OUTFILE...命令来导出数据,具体语法如下。
SELECT * FROM tablename INTO OUTFILE 'target_file' [option]
其中option参数可以是以下选项:
- FIELDS TERMINATED BY 'string' (设置字段之间的分隔符,可以为单个或多个
字符,默认是制表符'\t');
- FIELDS [OPTIONALLY] ENCLOSED BY 'char' (设置字段的包围字符,只能为
单个字符。如果加OPTIONALLY选项则只用在char、varchar和text等字符型字段
上,默认不使用引用符);
- FIELDS ESCAPED BY 'char' (设置如何写入或者读取特殊字符,只能为单个字
符,即设置转义字符,默认为'\');
- LINES STARTING BY 'string' (设置每行数据开头的字符串,可以为单个或多个
字符,默认情况下不使用任何字符);
- LINES TERMINATED BY 'string'(设置每行数据结尾的字符,可以为单个或多个
字符,默认为'\n');
其中char表示此符号只能是单个字符,string表示可以是字符串。
FIELDS和LINES两个子句都是自选的,但是如果两个都被指定了,FIELDS必须位于LINES的前面。
将actor表中的数据导出为文本,其中,字段分隔符为“,”,字段引用符为“''”(双引号),记录结束符为回车符。
(root@localhost) [sakila]>select * from actor where actor_id>10 into outfile '/tmp/actor.txt' fields terminated by "," enclosed by '"';
发现第一列是数值类型,如果不希望字段两边用引号引起来,可以改成:
(root@localhost) [sakila]>select * from actor where actor_id <10>




