美文网首页
MySQL数据导出的三种方式

MySQL数据导出的三种方式

作者: 十毛tenmao | 来源:发表于2019-03-27 22:28 被阅读0次

常见的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数据导出的三种方式

      本文链接:https://www.haomeiwen.com/subject/yxexbqtx.html