概要
DBeaverの機能を利用してDBをダンプする機会があったので、試した方法2つを整理した。
環境
MySQL: mysql8.0.26(Dockerコンテナを利用)
DBeaver: バージョン22.3.0.202212070729
試したこと
1. SQLの生成とデータのエクスポートを併用
SQLの生成機能:
- テーブルを右クリックで選択後、SQLの生成→DDLを選択
- 以下のように、
CREATE TABLE
文が表示され、コピーして利用できる(複数テーブル選択時は、複数テーブル用のSQLがコピーできる)
-- database.test definition
CREATE TABLE `test` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL,
`updated_at` timestamp NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
データエクスポート機能:
INSERT INTO database.test (created_at,updated_at,description) VALUES
('2023-01-27 12:00:00','2023-01-27 12:00:00','説明'),
...
上記2つの機能を併用することで、各テーブルのスキーマ作成、データ挿入用のSQLを用意できる
2. Dump databaseを利用
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL,
`updated_at` timestamp NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO database.test (created_at,updated_at,description) VALUES
('2023-01-27 12:00:00','2023-01-27 12:00:00','説明'),
...
各方法の利点と欠点
1.SQLの生成とデータのエクスポートを併用
- 利点:スキーマとデータをわけて利用したい場合には手軽に利用できる
- 欠点:出力がテーブルごとなので、出力を1ファイルにまとめたい場合はむいていない
2.Dump databaseを利用
- 利点:出力が1ファイルにまとまるので、ファイルの配布、利用が楽
- 欠点:データ量によってはDBeaverのSQLエディタなどからSQLを実行することが難しい(処理落ちする)