LoginSignup
15
6

More than 1 year has passed since last update.

【備忘録】DBeaverでDBをdumpする2つの方法

Last updated at Posted at 2023-02-01

概要

DBeaverの機能を利用してDBをダンプする機会があったので、試した方法2つを整理した。

環境

MySQL: mysql8.0.26(Dockerコンテナを利用)
DBeaver: バージョン22.3.0.202212070729

試したこと

1. SQLの生成とデータのエクスポートを併用

SQLの生成機能:

  • テーブルを右クリックで選択後、SQLの生成→DDLを選択

スクリーンショット 2023-01-27 13.20.23.png

  • 以下のように、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;

データエクスポート機能:

  • テーブルを右クリックで選択後、データエクスポートを選択
    スクリーンショット 2023-01-27 13.20.26.png

  • 以下のようなINSERTのSQLをファイルとして出力できる(1テーブルずつ別々に出力)

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を利用

  • データベースを右クリックで選択後、ツール→Dump databaseを選択
    スクリーンショット 2023-01-27 14.05.40.png

  • 1の方法で作成したCREATE TABLEINSERTが全テーブル分1ファイルにまとまって出力される

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を実行することが難しい(処理落ちする)
15
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6