MySQL使用select into outfile导出选择列的数据
概述
select into outfile它能够对需要导出的字段做限制,很好的满足了某些不需要导出主键字段的场景或分库分表的环境下数据的重新导入。与load data infile配合起来,可以很好的实现数据的导出与导入操作。
操作语法
语法:
SELECT ... INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
[export_options]
export_options:
[{ FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
示例:
SELECT customer_id, firstname, surname INTO OUTFILE '/exportdata/customers.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM customers;
注意事项
1.数据导出的路径对于操作系统的mysql用户必须是可写的,且其上层目录对于mysql用户来说必须是可执行的。
2.数据导出的路径对于操作系统的mysql用户必须是可写的,且其上层目录对于mysql用户来说必须是可执行的。
(1)查看数据库用户是否具有file权限
show grants for ebank@"%";
(2)查看数据库的全局参数secure_file_priv
show variables like "secure_file_priv";
secure_file_priv的取值有三种,其一为一个具体的路径,那么使用select into outfile导出数据时,则只能导出在secure_file_priv指定的路径下;其二为一个空字符串,在此种取值下,那么数据库不会对导出的路径做限制,只要select into outfile指定导出的路径对于操作系统层面的mysql用户具有读写执行的权限,则数据即可正常导出;其三取值为null,此种取值代表数据库不能使用select into outfile导出数据。
如果数据库secure_file_priv的取值为null,是不能导出数据的,因此需要在配置文件中重新指定secure_file_priv的取值。
secure_file_priv = ‘’
(3)修改文件权限
701,即任何用户对目录都有执行权限
chmod 701 目录
还没有评论,来说两句吧...