导出纯文本的备份数据,纯文本的优点在于占用存储空间小,执行效率相对mysqldump较高。
导出SQL语句:
select id,name,phone_hash from users
INTO OUTFILE '/tmp/users_back.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ';\n';
关键词:
INTO OUTFILE:「导出文件信息」指定导出的目录、文件名及格式
FIELDS TERMINATED BY :「字段间分隔符」用于定义字段间的分隔符
OPTIONALLY ENCLOSED BY: 「字段包围符」定义包围字段的字符
LINES TERMINATED BY: 「行间分隔符」定义每行的分隔符
可能遇到的问题:
执行命令的时候,可能会报错:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出现以上错误提示,是因为MySQL配置不允许执行导出命令。可以执行查看命令:
show global variables like '%secure_file_priv%';
secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
如果出现不允许导入导出,可以通过更改MySQL配置。
-
找到my.cnf添加:secure_file_priv='/tmp'(MySQL配置文件一般在/etc/my.cnf);
-
重启MySQL,再次执行查看命令,secure_file_priv值为我们配置的路径,则表明设置成功;
-
正常执行导入导出命令。