そろそろ新年度を迎えて新しいPCやサーバを受け取る事もあるかと思いますが,
そこで,
デモンストレーション環境
今回使用するmysqldumpに関してはMac OS X
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | zipcode | +--------------------+ 5 rows in set (0.00 sec)
mysqldumpを使ってみる
まずは一番シンプルにスキーマ全体をバックアップしてみましょう。以下のコマンドでローカルにあるMySQLからバックアップを取得します。またmysqlコマンドを使う時と同様に,
$ mysqldump -uroot -h127.0.0.1 -P3306 zipcode > backup.sql
出力されたbackup.
出力されたファイルの冒頭部分を見てみると,
-- MySQL dump 10.13 Distrib 5.7.11, for osx10.10 (x86_64)
--
-- Host: localhost Database: zipcode
-- ------------------------------------------------------
-- Server version 5.7.11
/*!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 utf8mb4 */;
---省略---
続いてテーブルの宣言部分になります。ここでは最初にzipcodeテーブルが存在する場合にDROPを行ってからCREATEテーブルを行ってます。このことにより,
--
-- Table structure for table `zipcode`
--
DROP TABLE IF EXISTS `zipcode`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `zipcode` (
`code` varchar(12) NOT NULL,
`old_zipcode` varchar(5) NOT NULL,
`zip_code` varchar(7) NOT NULL,
`prefecture_kana` varchar(255) NOT NULL,
`city_kana` varchar(255) NOT NULL,
`town_kana` varchar(255) NOT NULL,
`prefecture` varchar(128) NOT NULL,
`city` varchar(128) NOT NULL,
`town` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
最後にデータをinsertしている部分を確認してみます。以下のようにバルクインサートが行われていきます。
--
-- Dumping data for table `zipcode`
--
LOCK TABLES `zipcode` WRITE;
/*!40000 ALTER TABLE `zipcode` DISABLE KEYS */;
INSERT INTO `zipcode` VALUES ('01610','056 ','0560001','ホッカイドウ','ヒダカグンシンヒダカチョウ','シズナイメナ(ソノタ)','北海道','日高郡新ひだか町','静>内目名(その他)'),('01610','056 ','0560024','ホッカイドウ','ヒダカグンシンヒダカチョウ','シズナイヤマテチョウ','北海道','日高郡新ひだか町','静内山手町'),('01610','056 ','0560018','ホッカイドウ','ヒダカグンシンヒダカチョウ','シズナイヨシノチョウ','北海道','日高郡新ひだか町','静内吉野町'), ---省略---
このようにまずはSQLベースでバックアップを取ることができました。