暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysqldump之where用法

原创 Leo 2023-10-21
412

文档课题:mysqldump之where用法.

数据库:MySQL 5.7.21

应用场景:实际生产中,需要运用mysqldump导出指定条件的数据,并且以insert语句的形式呈现,如下为相关测试.

1、数据库信息

mysql> select * from staffs;

+----+------+-----+---------+---------------------+

| id | name | age | pos     | add_time            |

+----+------+-----+---------+---------------------+

|  1 | z3   |  22 | manager | 2023-08-27 13:41:41 |

|  2 | July |  23 | dev     | 2023-08-27 13:41:41 |

|  3 | 2000 |  23 | dev     | 2023-08-27 13:41:42 |

+----+------+-----+---------+---------------------+

3 rows in set (0.00 sec)

 

mysql> desc staffs;

+----------+-------------+------+-----+-------------------+----------------+

| Field    | Type        | Null | Key | Default           | Extra          |

+----------+-------------+------+-----+-------------------+----------------+

| id       | int(11)     | NO   | PRI | NULL              | auto_increment |

| name     | varchar(24) | NO   | MUL |                   |                |

| age      | int(11)     | NO   |     | 0                 |                |

| pos      | varchar(20) | NO   |     |                   |                |

| add_time | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |

+----------+-------------+------+-----+-------------------+----------------+

5 rows in set (0.00 sec)

 

mysql> select database();

+------------+

| database() |

+------------+

| booksDB    |

+------------+

1 row in set (0.00 sec)

 

2、相关测试

2.1、int字段测试

[mysql@mysql-leo-master ~]$ mysqldump -uroot -p --single-transaction --complete-insert --where='id=2' booksDB staffs > /home/mysql/staffs.txt            

Enter password:

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

 

2.2、数据确认

[mysql@mysql-leo-master ~]$ ls -ltr

total 2216

-rw-rw-r--. 1 mysql mysql 2184442 Sep  2 14:30 full_backup.sql

drwxrwxr-x. 2 mysql mysql      38 Sep 23 17:40 etc

-rw-rw-r--. 1 mysql mysql    1277 Oct 15 10:54 20231015.log

-rw-rw-r--. 1 mysql mysql    3354 Oct 21 10:49 20231021.txt

-rw-rw-r--. 1 mysql mysql   67518 Oct 21 10:57 prd_catalog.txt

-rw-rw-r--. 1 mysql mysql    3582 Oct 21 12:59 staffs.txt

[mysql@mysql-leo-master ~]$ cat staffs.txt

-- MySQL dump 10.13  Distrib 5.7.21-20, for Linux (x86_64)

--

-- Host: localhost    Database: booksDB

-- ------------------------------------------------------

-- Server version       5.7.21-20-log

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

/*!50717 SELECT COUNT(*) INTO @rocksdb_has_p_s_session_variables FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'performance_schema' AND TABLE_NAME = 'session_variables' */;

/*!50717 SET @rocksdb_get_is_supported = IF (@rocksdb_has_p_s_session_variables, 'SELECT COUNT(*) INTO @rocksdb_is_supported FROM performance_schema.session_variables WHERE VARIABLE_NAME=\'rocksdb_bulk_load\'', 'SELECT 0') */;

/*!50717 PREPARE s FROM @rocksdb_get_is_supported */;

/*!50717 EXECUTE s */;

/*!50717 DEALLOCATE PREPARE s */;

/*!50717 SET @rocksdb_enable_bulk_load = IF (@rocksdb_is_supported, 'SET SESSION rocksdb_bulk_load = 1', 'SET @rocksdb_dummy_bulk_load = 0') */;

/*!50717 PREPARE s FROM @rocksdb_enable_bulk_load */;

/*!50717 EXECUTE s */;

/*!50717 DEALLOCATE PREPARE s */;

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;

SET @@SESSION.SQL_LOG_BIN= 0;

 

--

-- GTID state at the beginning of the backup

--

 

SET @@GLOBAL.GTID_PURGED='d0dddbd8-43bd-11ee-ac2f-000c29763af3:1-1597530';

 

--

-- Table structure for table `staffs`

--

 

DROP TABLE IF EXISTS `staffs`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `staffs` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',

  `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',

  `pos` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',

  `add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',

  PRIMARY KEY (`id`),

  KEY `index_staffs_nameAgePos` (`name`,`age`,`pos`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='员工记录表';

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Dumping data for table `staffs`

--

-- WHERE:  id=2

 

LOCK TABLES `staffs` WRITE;

/*!40000 ALTER TABLE `staffs` DISABLE KEYS */;

INSERT INTO `staffs` (`id`, `name`, `age`, `pos`, `add_time`) VALUES (2,'July',23,'dev','2023-08-27 05:41:41');

/*!40000 ALTER TABLE `staffs` ENABLE KEYS */;

UNLOCK TABLES;

SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

/*!50112 SET @disable_bulk_load = IF (@is_rocksdb_supported, 'SET SESSION rocksdb_bulk_load = @old_rocksdb_bulk_load', 'SET @dummy_rocksdb_bulk_load = 0') */;

/*!50112 PREPARE s FROM @disable_bulk_load */;

/*!50112 EXECUTE s */;

/*!50112 DEALLOCATE PREPARE s */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

 

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

 

-- Dump completed on 2023-10-21 12:59:45

 

2.3、varchar字段测试

[mysql@mysql-leo-master ~]$ mysqldump -uroot -p --single-transaction --complete-insert --where='name="July"' booksDB staffs > /home/mysql/staffs.txt

Enter password:

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

 

2.4、数据确认

[mysql@mysql-leo-master ~]$ cat staffs.txt

-- MySQL dump 10.13  Distrib 5.7.21-20, for Linux (x86_64)

--

-- Host: localhost    Database: booksDB

-- ------------------------------------------------------

-- Server version       5.7.21-20-log

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

/*!50717 SELECT COUNT(*) INTO @rocksdb_has_p_s_session_variables FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'performance_schema' AND TABLE_NAME = 'session_variables' */;

/*!50717 SET @rocksdb_get_is_supported = IF (@rocksdb_has_p_s_session_variables, 'SELECT COUNT(*) INTO @rocksdb_is_supported FROM performance_schema.session_variables WHERE VARIABLE_NAME=\'rocksdb_bulk_load\'', 'SELECT 0') */;

/*!50717 PREPARE s FROM @rocksdb_get_is_supported */;

/*!50717 EXECUTE s */;

/*!50717 DEALLOCATE PREPARE s */;

/*!50717 SET @rocksdb_enable_bulk_load = IF (@rocksdb_is_supported, 'SET SESSION rocksdb_bulk_load = 1', 'SET @rocksdb_dummy_bulk_load = 0') */;

/*!50717 PREPARE s FROM @rocksdb_enable_bulk_load */;

/*!50717 EXECUTE s */;

/*!50717 DEALLOCATE PREPARE s */;

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;

SET @@SESSION.SQL_LOG_BIN= 0;

 

--

-- GTID state at the beginning of the backup

--

 

SET @@GLOBAL.GTID_PURGED='d0dddbd8-43bd-11ee-ac2f-000c29763af3:1-1597530';

 

--

-- Table structure for table `staffs`

--

 

DROP TABLE IF EXISTS `staffs`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `staffs` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',

  `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',

  `pos` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',

  `add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',

  PRIMARY KEY (`id`),

  KEY `index_staffs_nameAgePos` (`name`,`age`,`pos`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='员工记录表';

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Dumping data for table `staffs`

--

-- WHERE:  name="July"

 

LOCK TABLES `staffs` WRITE;

/*!40000 ALTER TABLE `staffs` DISABLE KEYS */;

INSERT INTO `staffs` (`id`, `name`, `age`, `pos`, `add_time`) VALUES (2,'July',23,'dev','2023-08-27 05:41:41');

/*!40000 ALTER TABLE `staffs` ENABLE KEYS */;

UNLOCK TABLES;

SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

/*!50112 SET @disable_bulk_load = IF (@is_rocksdb_supported, 'SET SESSION rocksdb_bulk_load = @old_rocksdb_bulk_load', 'SET @dummy_rocksdb_bulk_load = 0') */;

/*!50112 PREPARE s FROM @disable_bulk_load */;

/*!50112 EXECUTE s */;

/*!50112 DEALLOCATE PREPARE s */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

 

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

 

-- Dump completed on 2023-10-21 13:05:14

 

说明:如上所示,指定条件的数据均成功以insert语句导出.

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论