5. into outfile用法
1.前言
官方文档:https://dev.mysql.com/doc/refman/5.7/en/select-into.html
into outfile命令是常见的数据进行导入和导出工具,这里主要是介绍一下它的使用用法
select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
参数解释:
into outfile '导出的目录和文件名'
fields terminated by '字段间分隔符'
optionally enclosed by '字段包围符' 注意:定义包围字段的字符(数值型字段无效)
lines terminated by '行间分隔符' :定义每行的分隔符
2.使用select xxxx into outfile --- load data 进行数据迁移
说明:该命令一般用于对某张表进行数据导出操作,且导出的只是数据,而不包括数据结构。因此,在使用这个命令的时候,我们在导入数据之前需要先创建好表结构文件(也就是创表语句),然后再使用load data infile 'file_name' into table table_name语句进行数据导入。
secure_file_priv参数说明:
这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限
如果这个参数为空,这个变量没有效果; 如果这个参数设为一个目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它; 如果这个参数为NULL,MySQL服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入。
secure_file_priv : 该值一般设置一个目录或者是一个空字符串,但是不能设置为Null,否则将不能导出数据
3.实战
##导出语句 select * from titles into outfile '/tmp/titles1.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'; ##这里要先建表结构文件(用创表语句),跨库进行创建表结构 create table db1.tablename like db2.tablename; ##导入语句 load data infile '导出是的文件的绝对路径' into table table_name ##注意以上命令都是在mysql客户端中执行,而不是linux系统命令下