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出力を参照のこと。

view関連

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください