SQLの窓

2017年05月19日


Windows 環境の MySQL から日本語名のテーブルを コマンドプロンプトでエクスポート(mysqldump.exe)する

Windows であっても、MySQL Community Edition(GPL) に対する操作はコマンドプロンプトから行います。Windows では、日本語は SHIFT_JIS( MySQL では cp932 を使用します )で表現されるので、一般的にサーバ側で UTF-8 で構築される MySQL では日本語のテーブル名を mysqldump.exe で認識してくれません。
(mysql.exe では cp932 で最初から調整されています)

show variables like 'cha%'


そこで、mysqldump で以下のようなコマンドラインを作成してデータのエクスポートを行います
mysqldump.exe --host=localhost --user=root --password=パスワード --add-drop-table --force --quote-names --default-character-set=cp932 lightbox 商品マスタ 得意先マスタ > export.sql
▼ 上記コマンドラインに改行を入れて解りやすく並べています
mysqldump.exe
 --host=localhost
 --user=root
 --password=パスワード
 --add-drop-table
 --force
 --quote-names
 --default-character-set=cp932
 lightbox 商品マスタ 得意先マスタ > export.sql
lightbox は、DB名で、商品マスタと得意先マスタはテーブル名です この結果取得される export.sql は以下のようになります
-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: localhost    Database: lightbox
-- ------------------------------------------------------
-- Server version	5.7.17-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 cp932 */;
/*!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 */;

--
-- Table structure for table `商品マスタ`
--

DROP TABLE IF EXISTS `商品マスタ`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `蝠・刀繝槭せ繧ソ` (
  `蝠・刀繧ウ繝シ繝荏 varchar(4) NOT NULL,
  `蝠・刀蜷港 varchar(50) DEFAULT NULL,
  `蝨ィ蠎ォ隧穂セ。蜊倅セ。` int(11) DEFAULT NULL,
  `雋ゥ螢イ蜊倅セ。` int(11) DEFAULT NULL,
  `蝠・刀蛻・。杼 varchar(3) DEFAULT NULL,
  `蝠・刀蛹コ蛻・ varchar(1) DEFAULT NULL,
  `菴懈・譌・` datetime DEFAULT NULL,
  `譖エ譁ー譌・` datetime DEFAULT NULL,
  `蛯呵?チ mediumtext,
  `蜑企勁繝輔Λ繧ー` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`蝠・刀繧ウ繝シ繝荏)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `商品マスタ`
--

LOCK TABLES `商品マスタ` WRITE;
/*!40000 ALTER TABLE `商品マスタ` DISABLE KEYS */;
省略(cp932 の insert)
/*!40000 ALTER TABLE `商品マスタ` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `得意先マスタ`
--

DROP TABLE IF EXISTS `得意先マスタ`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `蠕玲э蜈医・繧ケ繧ソ` (
  `蠕玲э蜈医さ繝シ繝荏 varchar(4) NOT NULL,
  `蠕玲э蜈亥錐` varchar(50) DEFAULT NULL,
  `蠕玲э蜈亥玄蛻・ varchar(1) DEFAULT NULL,
  `諡・ス楢?・ varchar(4) DEFAULT NULL,
  `驛オ萓ソ逡ェ蜿キ` varchar(7) DEFAULT NULL,
  `菴乗園・疏 varchar(100) DEFAULT NULL,
  `菴乗園・蛋 varchar(100) DEFAULT NULL,
  `菴懈・譌・` datetime DEFAULT NULL,
  `譖エ譁ー譌・` datetime DEFAULT NULL,
  `邱譌・` int(11) DEFAULT NULL,
  `邱譌・蛹コ蛻・ int(11) DEFAULT NULL,
  `謾ッ謇墓律` int(11) DEFAULT NULL,
  `蛯呵?チ varchar(100) DEFAULT NULL,
  PRIMARY KEY (`蠕玲э蜈医さ繝シ繝荏)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `得意先マスタ`
--

LOCK TABLES `得意先マスタ` WRITE;
/*!40000 ALTER TABLE `得意先マスタ` DISABLE KEYS */;
省略(cp932 の insert)
/*!40000 ALTER TABLE `得意先マスタ` ENABLE KEYS */;
UNLOCK TABLES;
/*!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 2017-05-19 17:34:14

このテキストファイルは、SHIFT_JIS として表示した場合、CREATE TABLE の部分が化けたように見えますが、その直前で /*!40101 SET character_set_client = utf8 */; として utf8 として判断されるようになっているので、MySQL サーバであれば Windows でもレンタルサーバでも正しく動作します(インポート時はレンタルサーバの phpmyadmin で SHIFT_JIS として読み込む)

コマンドプロンプト環境の作成

仮に、c:\user\dos というフォルダにパスを通したとして、この中に以下のバッチファイルを保存します

1) MySQL のコマンドプロンプトからの処理用バッチファイル
(MySQL のコマンドが保存されているパスは PC によって変わります)

2) 管理者権限のコマンドプロンプトを開くバッチファイル

そして、普段 MySQL のサービスは停止しているとして、コマンドプロンプトからサービスを開始する為、ファイル名を指定して実行から、admin と入力して管理者権限でコマンドプロンプトを開きます。

1) sc start MySQL57


2) sc query MySQL57

※ MySQL57 は、システムに登録されたサービス名

表示結果より、『STATE : 4  RUNNING』である事を確認したら、mysql_cmd と入力します(サービスが起動済みならば、ファイル名を指定して実行より、mysql_cmd と入力)。

そして、mysqldump を使用してバックアップを行います。

補足

MySQL で使用可能なキャラクタセット文字列は、SHOW CHARACTER SET で取得できます




【MySQLの最新記事】
posted by lightbox at 2017-05-19 18:05 | Comment(0) | MySQL | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり