Top>DB>MySQL>2019013001

●MySQLデータベース・テーブルをエクスポートする。

MySQLデータベース・テーブルをエクスポートするには mysqldump コマンドを使用する。
mysqldump コマンドの使用方法やオプションには様々なものがある。
詳細についてはMySQLのホームページを参照されたし。
ここでは簡単な使用方法について記載する。

書式
mysqldump [options] db_name
指定した一つのデータベースをエクスポートする。
mysqldump [options] db_name [tbl_name ...]
指定したデータベースの指定したテーブルをエクスポートする。
mysqldump [options] --databases db_name ...
指定した複数のデータベースをエクスポートする。
mysqldump [options] --all-databases
全てのデータベースをエクスポートする。

※デフォルトでは標準出力へ出力されるため、ファイルへリダイレクトするかパイプでつないで別コマンドへの入力となるようにすること。
※デフォルトではオプションとして --opt が指定されている。


オプション
--opt --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset オプションが指定される。
--add-drop-table DROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加する。
※すでにテーブルがある場合に既存のテーブルはドロップされる。
--add-locks LOCK TABLES と UNLOCK TABLES ステートメントで各テーブルダンプを囲む。
※ダンプ中のテーブルはロックされる。
--create-options すべての MySQL に固有なテーブルオプションを CREATE TABLE ステートメントに含める。
※テーブル作成時のオプションを含む。
--disable-keys 各テーブルについて、キーを無効にするステートメントおよび有効にするステートメントで INSERT ステートメントを囲む。
※インポート時にキーを無効にしてロード処理を高速にする。
--extended-insert 複数の VALUES リストを含む、複数行 INSERT 構文を使用する。
※インポート処理の高速化を行う。
--lock-tables テーブルをダンプする前にすべてロックする。
--quick サーバーからのテーブルについて、一度に 1 行ずつ取得する。
※出力時にデータをバッファリングしないため、実行時にメモリーを圧迫しない。
--set-charset SET NAMES default_character_set を出力に追加する。
※データベースのキャラクターセットを維持する。
--no-data テーブルの内容をダンプしない。
※テーブルについては定義情報のみをエクスポートしデータはエクスポートしない。
その他多数。

使用例① - 一つのDBをエクスポートする。
mysqldump -u <ユーザ名> -p<パスワード> <データベース名> > <保存ファイル名>

(例)mysqldump -u root -prootpasswd testdb > testdb.sql
※testdbをtestdb.sqlファイルへエクスポートする。

インポートするには次のコマンドを実行する。
mysql -u root -prootpasswd testdb < testdb.sql
※事前にデータベース testdb を作成しておくことが必要。


使用例② - 特定のテーブルをエクスポートする。
mysqldump -u <ユーザ名> -p<パスワード> <データベース名> <テーブル名> > <保存ファイル名>

(例)mysqldump -u root -prootpasswd testdb table1 > table1.sql
※testdbのtable1をtable1.sqlファイルへエクスポートする。

インポートするには次のコマンドを実行する。
mysql -u root -prootpasswd testdb < table1.sql


使用例③ - 複数のデータベースをエクスポートする。
mysqldump -u <ユーザ名> -p<パスワード> --databases <データベース名1> <データベース名2>... > <保存ファイル名>

(例)mysqldump -u root -prootpasswd --databases db1 db2 > databases.sql
※db1、db2をdatabases.sqlファイルへエクスポートする。

インポートするには次のコマンドを実行する。
mysql -u root -prootpasswd < databases.sql


使用例④ - 全てのデータベースをエクスポートする。
mysqldump -u <ユーザ名> -p<パスワード> --all-databases > <保存ファイル名>

(例)mysqldump -u root -prootpasswd --all-databases > databases.sql
※全てのデータベースをdatabases.sqlファイルへエクスポートする。
※mysqlデータベースやtestデータベースなどデフォルトで存在するデータベースも含まれてしまうため、このオプションを使用することは少ないでしょう。

インポートするには次のコマンドを実行する。
mysql -u root -prootpasswd < databases.sql


最終更新日:2019/01/30

- Published By MINDKERNEL.COM -