MySQL数据导出总结
知识点
- MySQL secure_file_priv配置项目与 select into outfile
- Python利用csv模块写入CSV文件
- Python利用pandas模块写入CSV文件
- mysqldump 指定where条件的导出
select into outfile
使用如上命令导出数据的时候如果报错
1 | ERROR 1290 (HY000) at line 1: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement |
那么需要检查数据库配置
1 | > show variables like '%secure%';" |
如果 secure_file_priv
为 NULL 代表不允许通过这样的方式导出
要么修改数据库配置
1 | secure_file_priv = /data/mysql-export/ |
要么使用 mysqldump 导出。
这种方式的好处是: 导出的时候可以
指定具体的列选项
;
另外其实还有变相的解决方案
解决方案:
使用python脚本写入 xxx.csv文件
Demo举例
1 | #!/usr/bin/env python |
更优化的脚本,使用 pandas
模块替代 csv
模块
1 | #!/usr/bin/env python |
mysqldump
支持常规的备份比如:
备份所有数据库
备份指定数据库
备份指定数据库下的指定表
备份数据库的时候,是否只备份表数据库,是否备份存储过程、触发器等
另外mysqldump 支持按照条件(–where)备份,比如
1 | mysqldump -h xxx -u xxdba -p dbname tablename --where "id < 100" > /tmp/dbname-tablename.sql |
关于mysqldump的用法可以通过 mysqldump --help
具体查看,或者网上有很多教程可以参考
另外对于数据库备份,可以参考 mydumper 工具