mysql数据表及数据库导入导出最佳实践

一、备份导出数据:

Mysqldump常用命令:

mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql

 

常见选项:

-u: 用户名

-p: 密码

-P: 端口号,不写默认3306

--all-databases, -A:备份所有数据库

--databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。

-d: 只导出数据库的表结构

-t: 只导出数据库的数据

--quick, -q:快速导出

--xml, -X:导出为xml文件

 

下面是具体的使用samples:

1. 备份全部数据库的数据和结构(-A)

mysqldump -uroot -p123456 -A > 0101.sql

2. 备份全部数据库的结构(-d)

mysqldump -uroot -p123456 -P3306 -A -d > 0102.sql

3. 备份全部数据库的数据(-t)

mysqldump -uroot -p123456 -P3306 -A -t > 0103.sql

4. 备份单个数据库的数据和结构(sakila 为数据库名)

mysqldump -uroot -p123456 -P3306 sakila > 0104.sql

5. 备份单个数据库结构(sakila 为数据库名,-d)

mysqldump -uroot -p123456 -P3306 sakila -d > 0105.sql

6. 备份单个数据库数据(sakila 为数据库名,-t)

mysqldump -uroot -p123456 -P3306 sakila -t > 0106.sql

7. 备份多个表的结构和数据 (table1,table2为表名)

mysqldump -uroot -p123456 -P3306 --databases sakila table1 table2 > 0107.sql

8. 一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > 0108.sql

 9.备份单个或多个表

mysqldump -uroot -pzpAoPaxPgCP47yn4 --databases credit --tables pcore_enterprise > pcore_enterprise.sql

10.在很多时候,如果需要多次执行可快速完成的sql,可以使用-e 参数将命令组合起来直接得到结果,而不用进入数据库中进行复杂操作

mysql -uroot -pzpAoPaxPgCP47yn4 -e 'use credit;show tables;'

warning!

有个特别需要注意的地方,mysqldump时>和--result-file=还是有区别的,因为mysql5.7默认会对明文的密码提示报错,所以,在使用明文密码登录mysql导出文件的时候,如果使用>,那么sql文件的第一行默认会是warning警告,这样的话在对sql文件执行导入时会报错如下:

所以,需要在执行数据导入任务前先head -n 2 sql文件看下第一行是不是warning,如果是的话,参考下面的解决办法 

解决办法:

sed -i '1d' xx.sql

删除掉第一行就好了

11. 如果需要在导出数据库结构的时候加上存储过程,在备份命令后面加上-R参数即可。

二、还原导入数据库:

1. 系统命令行:

mysqladmin -uroot -p123456 create db_name 
mysql -uroot -p123456  db_name < d:\bak\0101.sql

注:在导入备份数据库前,db_name如果没有,是需要创建的; 而且与backup20110527.sql中数据库名是一样的才可以导入。

2. soure 方法(由于必须在前台执行,所以只能用于能够快速执行完成的少量数据操作): 

mysql > use db
mysql > source d:\bak\0101.sql

 

Comments:

1. 还原单个数据库、单个数据库的多表需要指定数据库,而还原多个数据库时不用指定数据库。

2. 区别:备份用的命令是mysqldump, 还原用的是mysql。

在执行大量数据导入或导出时,需要使用nohup命令将任务挂到后台执行,避免由于前台终端异常导致任务中断,将sql文件上传到容器中或挂载的数据卷中后应当执行:

nohup Command &

由于sql文件的导出一般不会有日志或大量信息打印,所以只需将命令挂到后台即可

分类: mysql
 
posted @   小雨淅淅o0  阅读(1175)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示