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 (値) |
コメント