mysql mysqldump 命令导出指定表的数据和结构

使用mysqldump命令行导出mysql数据库指定表的数据和结构:
实例,首先建一个数据库,命名为数据库 “school_2”,并在下面建立两个表:“student2”、“students3”:
在这里插入图片描述

1.备份该数据库数据和结构:

mysqldump -uroot -p123456 school_2>F:\Study\SQL\test1.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称
备份后的sql语句如下:

DROP TABLE IF EXISTS `student2`;
CREATE TABLE `student2` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` VARCHAR(100) NOT NULL COMMENT '学院姓名',
  `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '学院年龄',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student2`
--

LOCK TABLES `student2` WRITE;
/*!40000 ALTER TABLE `student2` DISABLE KEYS */;
INSERT INTO `student2` VALUES (1,'haode','15'),(4,'xiao','19');
/*!40000 ALTER TABLE `student2` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `students3`
--

DROP TABLE IF EXISTS `students3`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `students3` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
  `address` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  `number` INT DEFAULT NULL,
  `numbers` INT DEFAULT NULL,
  `chanumber` VARCHAR(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_sex` (`number`),
  CONSTRAINT `FK_sex` FOREIGN KEY (`number`) REFERENCES `student2` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `students3`
--

LOCK TABLES `students3` WRITE;
/*!40000 ALTER TABLE `students3` DISABLE KEYS */;
INSERT INTO `students3` VALUES (1,'2','123456','女',NULL,NULL,NULL,NULL,NULL),(2,'3','123456','女',NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `students3` ENABLE KEYS */;
UNLOCK TABLES;

2.只备份数据库结构:

mysqldump -uroot -p123456 school_2 -d>F:\Study\SQL\test2.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,-d表示结构的命令,导出的sql语句如下,这里已经没有了数据:

DROP TABLE IF EXISTS `student2`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `student2` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` VARCHAR(100) NOT NULL COMMENT '学院姓名',
  `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '学院年龄',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `students3`
--

DROP TABLE IF EXISTS `students3`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `students3` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
  `address` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  `number` INT DEFAULT NULL,
  `numbers` INT DEFAULT NULL,
  `chanumber` VARCHAR(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_sex` (`number`),
  CONSTRAINT `FK_sex` FOREIGN KEY (`number`) REFERENCES `student2` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;

3.只备份数据库数据:

mysqldump -uroot -p123456 school_2 -t>F:\Study\SQL\test3.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,-t 表示只备份数据的命令,备份后的sql语句如下:

LOCK TABLES `student2` WRITE;
/*!40000 ALTER TABLE `student2` DISABLE KEYS */;
INSERT INTO `student2` VALUES (1,'haode','15'),(4,'xiao','19');
/*!40000 ALTER TABLE `student2` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Dumping data for table `students3`
--

LOCK TABLES `students3` WRITE;
/*!40000 ALTER TABLE `students3` DISABLE KEYS */;
INSERT INTO `students3` VALUES (1,'2','123456','女',NULL,NULL,NULL,NULL,NULL),(2,'3','123456','女',NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `students3` ENABLE KEYS */;
UNLOCK TABLES;

4.备份数据库指定表的结构和数据:

mysqldump -uroot -p123456 school_2 student2 >F:\Study\SQL\test5.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2为对应表名,导出后的sql语句如下:

DROP TABLE IF EXISTS `student2`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `student2` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` VARCHAR(100) NOT NULL COMMENT '学院姓名',
  `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '学院年龄',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student2`
--

LOCK TABLES `student2` WRITE;
/*!40000 ALTER TABLE `student2` DISABLE KEYS */;
INSERT INTO `student2` VALUES (1,'haode','15'),(4,'xiao','19');
/*!40000 ALTER TABLE `student2` ENABLE KEYS */;
UNLOCK TABLES;

5.备份数据指定表的结构:

mysqldump -uroot -p123456 school_2 student2 -d>F:\Study\SQL\test6.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2为对应表名,-d表示结构,导出后的sql语句如下:

DROP TABLE IF EXISTS `student2`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `student2` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` VARCHAR(100) NOT NULL COMMENT '学院姓名',
  `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '学院年龄',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

6.备份数据指定表的数据:

mysqldump -uroot -p123456 school_2 student2 -t >F:\Study\SQL\test7.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2为对应表名,-t表示数据,导出后的sql语句如下:

LOCK TABLES `student2` WRITE;
/*!40000 ALTER TABLE `student2` DISABLE KEYS */;
INSERT INTO `student2` VALUES (1,'haode','15'),(4,'xiao','19');
/*!40000 ALTER TABLE `student2` ENABLE KEYS */;
UNLOCK TABLES;

7.备份数据库中多个表的数据和结构:

mysqldump -uroot -p123456 school_2 student2 students3 >F:\Study\SQL\test9.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2、students3为对应表名:

8.备份数据库中多个表的数据:

mysqldump -uroot -p123456 school_2 student2 students3 -t>F:\Study\SQL\test10.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2、students3为对应表名,-t表示数据:

9.备份数据库中多个表的结构:

mysqldump -uroot -p123456 school_2 student2 students3 -d>F:\Study\SQL\test11.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,student2、students3为对应表名,-d表示结构:

10.备份数据库包含建立数据库语句:

mysqldump -uroot -p123456 school_2 -B >F:\Study\SQL\test12.sql

其中root 123456为对应用户名和密码,school_2为要操作数据库名称,-B表示所有数据库,会包含建立这个数据库的语句,备份后的sql语句会多一句:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `school_2` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `school_2`;
### 如何使用 `mysqldump` 导出指定数据而不包含结构 为了仅导出 MySQL指定数据数据而排除其结构,可以通过设置参数来实现这一目标。具体来说,可以利用 `-t` 参数(或 `--no-create-info`),该参数的作用是阻止生成创建的 SQL 语句。 以下是具体的命令示例: ```bash mysqldump -h localhost -u root -p123456 --no-create-info student_info jssypk > c:/data_only_backup.sql ``` 上述命令中: - `-h localhost` 示连接到本地主机上的 MySQL 实例。 - `-u root` `-p123456` 分别指定了用户名密码。 - `--no-create-info` 或者简写为 `-t`,示不导出结构[^1]。 - `student_info` 是要操作的目标数据库名称。 - `jssypk` 是需要导出数据的具体名。 - 输出重定向符 (`>`) 将结果保存至文件路径 `c:/data_only_backup.sql`。 如果希望进一步优化此过程并确保只获取纯数据部分,则还可以结合其他选项一起使用。例如,在某些情况下可能还需要忽略触发器或其他附加对象的影响,此时可加入更多控制标志如 `--skip-triggers` 来完成更精确的任务配置[^2]。 最终形成的完整形式如下所示: ```bash mysqldump -h localhost -u root -p your_password --no-create-info --skip-triggers database_name table_name > output_file_path.sql ``` 通过这种方式能够有效分离数据与元信息之间的关系,从而满足单独备份需求的同时也便于后续迁移或者恢复工作中的灵活应用[^3]。 #### 验证导出的内容是否正确 执行完以上命令之后,应当验证输出文件是否确实仅仅包含了所需格的数据记录而非定义脚本等内容。这一步骤可通过任意支持大文本查看功能的应用程序打开刚才生成的结果文档来进行直观审查;另外也可以借助 grep 工具快速定位关键字确认是否存在 CREATE TABLE 类型指令残留情况[^4]。 ```bash grep "CREATE TABLE" /path/to/output_file_path.sql ``` 如果没有匹配项返回则说明成功实现了无结构数据提取目的。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值