一、数据导出
1. 导出整个数据库,也是最常用的
mysqldump -u username -p database_name > backup.sql 说明:
-
username:MySQL 用户名 -
-p:输入密码 -
--databases:(可选)导出的sql中生成确保数据库存在的语句:CREATE DATABASE IF NOT EXISTS database_name;USE database_name;
-
database_name:要导出的数据库名 -
backup.sql:导出文件名,存储到当前目录
执行时,系统会要求你输入密码,输入完后就会开始导出。包括:建表语句,已经包含了表的结构、字段属性、主键、外键、索引(包括普通索引、唯一索引、主键索引等) 的定义,所有数据的 INSERT 语句。
2. 导出数据库中的指定表
mysqldump -u username -p database_name table1 table2 > backup.sql 说明:
-
table1、table2:指定要导出的表名,可以导出多个表,用空格分开。
3. 导出数据库结构(不包含数据,也就是不生成Insert语句)
mysqldump -u username -p -d database_name > schema_backup.sql 说明:
-
-d:只导出数据库结构,不包含数据。
4. 导出数据库时排除某些表
mysqldump -u username -p --ignore-table=database_name.table_name database_name > backup.sql 说明:
-
--ignore-table=database_name.table_name:可以指定要排除的表,重复使用该选项可以排除多个表。
5. 导出包含存储过程和触发器
mysqldump -u username -p --routines --triggers database_name > backup.sql 说明:
-
--routines:导出存储过程。 -
--triggers:导出触发器。
二、数据导入
1. 导入数据库,最常用,要求数据库已存在
mysql -u username -p database_name < backup.sql 说明:
-
username:MySQL 用户名 -
database_name:目标数据库名(已创建好的数据库) -
backup.sql:需要导入的 SQL 文件路径
注意:导入前,确保目标数据库已经存在。如果数据库不存在,可以通过以下命令创建:
mysql -u username -p -e "CREATE DATABASE database_name;" 2. 导入数据到新的数据库
mysql -u username -p < backup.sql 说明:
-
这种方式会将数据导入到
backup.sql文件中的默认数据库。确保文件中包含CREATE DATABASE语句,也就是导出时使用了 --databases 参数。
3. 导入并覆盖现有数据
有时我们需要强制覆盖目标数据库中的数据,可以执行如下操作:
mysql -u username -p -e "DROP DATABASE IF EXISTS database_name; CREATE DATABASE database_name;" mysql -u username -p database_name < backup.sql 说明:
-
第一步删除并重新创建目标数据库。
-
第二步将数据导入到新创建的数据库中。
4. 导入特定表的数据
如果导出的文件包含多个表,但只想导入其中一部分,可以使用如下命令:
mysql -u username -p database_name < backup.sql 然后选择性导入相关表的数据(在 .sql 文件里手动删除不需要的表或使用 --ignore-table 选项)。
三、常见问题及解决
1. 数据导入时报错 "ERROR 1049 (42000): Unknown database"
原因:目标数据库不存在。
解决方法:在导入前,手动创建数据库。
mysql -u username -p -e "CREATE DATABASE IF NOT EXISTS database_name;"
2. 导出时遇到 "ERROR 2002 (HY000): Can't connect to local MySQL server"
原因:MySQL 服务未启动。
解决方法:确保 MySQL 服务已经启动,可以使用如下命令检查并启动 MySQL 服务。
systemctl status mysql # 检查状态
systemctl start mysql # 启动服务
总结
-
导出命令:
mysqldump -u username -p database_name > backup.sql -
导入命令:
mysql -u username -p database_name < backup.sql
确保在执行导入命令之前,目标数据库已经创建,或者使用 CREATE DATABASE 语句手动创建。如果需要排除某些表或导出结构,可以使用相应的命令选项。