【MySQL】エクスポートとインポート

スポンサーリンク

メンテナンス作業でエクスポートとインポートする機会がありましたので、書き留めます。

※ツールは使わずにコマンド操作の説明になります。

テーブルのエクスポートとインポート

エクスポート

エクスポートの構文

mysqldump -hホスト名 -uユーザー名 -pパスワード スキーマ テーブル> 出力ファイル名 --single-transaction
 
エクスポートの例
mysqldump -hXXXXXXXXXXXXXX.rds.amazonaws.com -utestuser -ppassword testdb movies > table.dump --single-transaction
 
テーブルに一行追加してみます。
mysql> insert into movies (title,content,stars,created) values ('aaa','',0,now()
);
Query OK, 1 row affected (0.01 sec)
 
mysql> select * from movies;
+----+-----------------------+---------+-------+---------------------+
| id | title                 | content | stars | created             |
+----+-----------------------+---------+-------+---------------------+
|  1 | テストタイトル        |         |     1 | 0000-00-00 00:00:00 |
|  2 | NULLのデータ          |         |     1 | 0000-00-00 00:00:00 |
|  3 | aaa                   |         |     0 | 2019-08-24 14:43:06 |
+----+-----------------------+---------+-------+---------------------+
3 rows in set (0.00 sec)
 

インポート

インポートの構文

mysql -hホスト名 -uユーザー名 -pパスワード スキーマ テーブル < インポートファイル名 

 

インポートの例

mysql -hXXXXXXXXXXXXXX.rds.amazonaws.com -utestuser -ppassword testdb movies < table.dump

 

テーブルデータが追加する前に戻っています。

mysql> select * from movies;
+----+-----------------------+---------+-------+---------------------+
| id | title                 | content | stars | created             |
+----+-----------------------+---------+-------+---------------------+
|  1 | テストタイトル        |         |     1 | 0000-00-00 00:00:00 |
|  2 | NULLのデータ          |         |     1 | 0000-00-00 00:00:00 |
+----+-----------------------+---------+-------+---------------------+
2 rows in set (0.00 sec)

 

DBのエクスポートとインポート

テーブルのインポート、エクスポートとほとんど同じです。

テーブル名を指定しないで実行すると、DBのインポート・エクスポートになります。

エクスポート

エクスポートの構文

mysqldump -hホスト名 -uユーザー名 -pパスワード スキーマ > 出力ファイル名 --single-transaction
 
エクスポートの例
mysqldump -hXXXXXXXXXXXXXX.rds.amazonaws.com -utestuser -ppassword testdb > table.dump --single-transaction
 
テーブルに一行追加してみます。
mysql> insert into movies (title,content,stars,created) values ('aaa','',0,now()
);
Query OK, 1 row affected (0.01 sec)
 
mysql> select * from movies;
+----+-----------------------+---------+-------+---------------------+
| id | title                 | content | stars | created             |
+----+-----------------------+---------+-------+---------------------+
|  1 | テストタイトル        |         |     1 | 0000-00-00 00:00:00 |
|  2 | NULLのデータ          |         |     1 | 0000-00-00 00:00:00 |
|  3 | aaa                   |         |     0 | 2019-08-24 14:43:06 |
+----+-----------------------+---------+-------+---------------------+
3 rows in set (0.00 sec)
 

インポート

インポートの構文

mysql -hホスト名 -uユーザー名 -pパスワード スキーマ < インポートファイル名 

 

インポートの例

mysql -hXXXXXXXXXXXXXX.rds.amazonaws.com -utestuser -ppassword testdb < table.dump

 

テーブルデータが追加する前に戻っています。

mysql> select * from movies;
+----+-----------------------+---------+-------+---------------------+
| id | title                 | content | stars | created             |
+----+-----------------------+---------+-------+---------------------+
|  1 | テストタイトル        |         |     1 | 0000-00-00 00:00:00 |
|  2 | NULLのデータ          |         |     1 | 0000-00-00 00:00:00 |
+----+-----------------------+---------+-------+---------------------+
2 rows in set (0.00 sec)

 

おまけ

テーブルの件数一覧を表示

以下コマンドでテーブルの件数一覧が見れます。

メンテナンス作業後の確認に利用できますね。

select table_name, table_rows from information_schema.TABLES where table_schema = 'DB名';

 

こんな感じで表示されます。

+————-+————+
| table_name | table_rows |
+————-+————+
| messages | 2 |
| movies | 2 |
+————-+————+

エクスポートのオプション「–single-transaction」について」

エクスポートのオプションで「–single-transaction」を指定していました。

このオプションを付けないと、エクスポート時にロックされてしまい、ほかの人が操作できなくなってしまいます。

事故の原因にもなりますので、InnoDBの場合はつけるようにしましょう。

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