【MySQL】mysqldumpの使い方

MySQL

mysqldumpの使い方

mysqldumpはMySQLデータベースのデータを様々な形式で出力(エクスポート)するコマンドです。
その様々な使い方について紹介します

  • オプション一覧
  • 複数DBからエクスポート
  • 複数テーブルからエクスポート
  • 指定したテーブルだけエクスポート
  • whereで条件指定する
  • insertを複数行にする
  • データのみエクスポート
  • DDL(DB構造)のみエクスポート

などなど様々なことができますのでぜひ読んでみて下さい。

mysqldump基本構文

mysqldump -u <ユーザー> -p <DB名> <テーブル名1> <テーブル名2> …
サンプル
mysqldump -u testuser -p testdb table1 table2 table3 > ./backup.sql

mysqldumpオプションまとめ

mysqldumpでよく使うオプションをまとめます

-u ユーザー名
-p パスワード
-h 接続ホスト名(デフォルトlocalhost)
-B
–databases
複数のデータベースを指定可能
-A 全データベース指定
-d
–no-data
データ行を除く
-n CREATE DATABASEを除く
-t
–no-create-info
CREATE TABLEを除く
–skip-add-drop-table DROP TABLEを除く
–extended-insert inser文を全データを1行にまとめた単一行形式にする
–skip-extended-insert insert文を1行1データにして複数行形式にする
-c
–complete-insert
カラム名を含む、完全な INSERT ステートメントを使用します。
–quick メモリバッファリングしない。データ量が多いときに時間はかかるがメモリ消費を抑える
–skip-lock-tables LOCK TABLESを除く。データの整合性は失う可能性はあるが高速
–single-transaction mysqldump時にロックをかけない。データの整合性は失う可能性はあるが高速

mysqldumpで出力する対象と形式まとめ

コマンド 概要 DB テーブル DDL データ mysqldumpファイルの構成
mysqldump -u[ユーザー] -p -A > [ファイル] 全DB 全て 全て SET
CREATE DATABASE IF NOT EXISTS
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p -B [DB1] [DB2] > [ファイル] 選択DB 複数 全て SET
CREATE DATABASE IF NOT EXISTS
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p [DB1] > [ファイル] 1DBのみ 1つ 全て SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p [DB1] [テーブル1] > [ファイル] 1テーブルのみ 1つ 1つ SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p [DB1] [テーブル1] [テーブル2] > [ファイル] 複数テーブル 1つ 複数 SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p -t [DB1] > [ファイル] データのみ 1つ 全て SET
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -u[ユーザー] -p -d –skip-add-drop-table [DB1] > [ファイル] DDLのみ 1つ 全て SET
CREATE TABLE
mysqldump -u[ユーザー] -p –skip-extended-insert [DB1] > [ファイル] 複数行INSERT文
(インポート遅い)
1つ 全て SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT VALUES (値)
INSERT VALUES (値)
mysqldump -u[ユーザー] -p -c [DB1] > [ファイル] 完全INSERT文 1つ 全て SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT (カラム名) VALUES (値), VALUES (値)
mysqldump -uroot -p -t [DB1] [テーブル1] –where “[条件文]” > [ファイル] 条件指定 1つ 1つ SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)
mysqldump -uroot -p -t [DB1] [テーブル1] [テーブル2] –where “[条件文]” > [ファイル] 条件指定 1つ 複数 SET
DROP TABLE IF EXISTS
CREATE TABLE
LOCK TABLES
INSERT INTO VALUES (値), VALUES (値)

コメント

タイトルとURLをコピーしました