MariaDB 指定したテーブルだけdumpする

MariaDB 指定したテーブルだけdumpする

MariaDBで、指定したテーブルだけdumpする手順を記述してます。「mysqldump」で対象のDBとTABLEを指定することで可能です。

環境

  • OS MIRACLE LINUX release 8.4 (Peony)
  • MariaDB 10.6.5

手順

指定したテーブルだけdumpするには、「mysqldump」実行時にテーブルを指定します。

mysqldump -u root -p DB名 テーブル名 > ファイル名.sql

実際に、「tbl1」というテーブルから作成してみます。
※output.sqlがある場合は、上書きされます。

# mysqldump -u root -p foo tbl1 > output.sql

作成されていることが確認できます。

# cat output.sql

LOCK TABLES `tbl1` WRITE;
/*!40000 ALTER TABLE `tbl1` DISABLE KEYS */;
INSERT INTO `tbl1` VALUES (1,'itiro',10),(2,'jiro',20),(3,'sabpro',30),(4,'siro',40),(5,'goro',50);
/*!40000 ALTER TABLE `tbl1` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection  = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER hoge
AFTER UPDATE ON tbl1
FOR EACH ROW
BEGIN
 INSERT INTO tbl2(name,create_at) values('UPDATE',now());
END */;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
/*!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 */;

以下のように、複数のテーブルを指定することも可能です。

# mysqldump -u root  -p foo tbl1 tbl2 > output.sql