viewの定義情報をダンプ
mysqldumpで、viewの定義情報をダンプするコマンドを解説する。
コマンド
コマンドは下記のとおりである。
mysqldump -u username -ppassword dbname viewname > create-view.sql
具体例
少し具体的に書こう。DB情報等が下記であったとする。
項目 | 値 |
---|---|
DBユーザ名 | pudding |
DBパスワード | qwerty123456 |
DB名 | zipcode |
view名 | v_t_price |
(ダンプファイル名) | v_t_price.sql |
このDB情報等を反映すると、下記のように書くことになる。
mysqldump -u pudding -pqwerty123456 zipcode v_t_price > v_t_price.sql
出力
出力は以下のようになる。viewなので、viewの定義情報のみ出力されている。viewをselectした時のデータは出力されない。なお、下記ダンプの内容は多くがコメントアウトされているが、これは「拡張コメント」という。MySQLのバージョンを判定してうまいことインポートできるように吐き出されている。コメントに見えるがコメントではないということだ。
-- MySQL dump 10.16 Distrib 10.1.28-MariaDB, for Win32 (AMD64) -- -- Host: localhost Database: zipcode -- ------------------------------------------------------ -- Server version 10.1.28-MariaDB /*!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 */; -- -- Temporary table structure for view `v_t_price` -- DROP TABLE IF EXISTS `v_t_price`; /*!50001 DROP VIEW IF EXISTS `v_t_price`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; /*!50001 CREATE TABLE `v_t_price` ( `id` tinyint NOT NULL, `teikei_or_hiteikei` tinyint NOT NULL, `weight_less_than` tinyint NOT NULL, `price` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; -- -- Final view structure for view `v_t_price` -- /*!50001 DROP TABLE IF EXISTS `v_t_price`*/; /*!50001 DROP VIEW IF EXISTS `v_t_price`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8 */; /*!50001 SET character_set_results = utf8 */; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `v_t_price` AS select `t_price`.`id` AS `id`,`t_price`.`teikei_or_hiteikei` AS `teikei_or_hiteikei`,`t_price`.`weight_less_than` AS `weight_less_than`,`t_price`.`price` AS `price` from `t_price` where ((3 <= `t_price`.`id`) and (`t_price`.`id` <= 6)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 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 */; -- Dump completed on 2018-02-10 17:16:09
用途
用途としては、単純にviewの移行だ。どちらかというと、データをエクスポートしたかったのに、この構文で定義情報をエクスポートしてしまってイラっとする場面が多いと思われる。viewのselect結果をCSV出力したい場合はviewの結果データをCSV出力を参照のこと。