MySQL备份-导出纯文本

106 阅读1分钟

导出纯文本的备份数据,纯文本的优点在于占用存储空间小,执行效率相对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%';

image.png

  1. secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
  2. secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
  3. secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

如果出现不允许导入导出,可以通过更改MySQL配置。

  1. 找到my.cnf添加:secure_file_priv='/tmp'(MySQL配置文件一般在/etc/my.cnf);

  2. 重启MySQL,再次执行查看命令,secure_file_priv值为我们配置的路径,则表明设置成功;

  3. 正常执行导入导出命令。