三种MySQL数据导出方式

December 17, 2023
测试
测试
测试
测试
3 分钟阅读

常见的MySQL数据导出有三种形式

SELECT ... INTO OUTFILE


SELECT * FROM person INTO OUTFILE '/var/lib/mysql-files/person.data';
  • LOAD DATA INFILE LOAD DATA INFILESELECT ... INTO OUTFILE的逆操作

常用选项

  • FIELDS TERMINATED BY ',':字段分隔符
  • ENCLOSED BY '"':包围字段的符号
  • LINES TERMINATED BY '\r\n':行分隔符

导出的数据格式非常灵活,但是只能导出在MySQL服务器上,而且是指定的目录(可能没有权限)

mysqldump


mysqldump -uroot -p  blog > blog.sql

使用mysqldump需要锁表,有时候会因为安全规则,不允许使用。mysqldump: Got error: 1044: "Access denied for user 'tenmao'@'192.168.58.100' to database 'tenmao_blog'" when using LOCK TABLES

常用选项

  • --where 条件过滤
mysqldump -uroot -p  tenmao person --where="status=1" > tenmao.sql
  • --no-data 只导出表结构
mysqldump -uroot -p  tenmao > tenmao_structure.sql
  • --single-transaction 不锁表

这个功能还是很实用的,只支持InnoDB引擎

mysql命令行


mysql -A tenmao_blog -h 192.168.58.200 -utenmao -p -e "select * from article where status=1" > articles.csv

这种方式特别灵活,缺点是不能像SELECT ... INTO OUTFILE指定分隔符,在一些column内容比较复杂的场景下(比如同时有',",\n, \t的时候),效果不太好

常见问题

  • The MySQL server is running with the --secure-file-priv option so it cannot execute this statement:因为只能导出到指定目录,该目录可以通过命令show global variables like '%secure_file_priv%';查询得到

参考

  • MySQL 数据导出
  • mysql5.7导出数据提示--secure-file-priv选项问题的解决方法
  • MySQL备份命令mysqldump参数说明与示例

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多