NavicatでMySQLのテストデータを作成する
はじめに
弊社で取り扱っているデータベース管理ツールの Navicat の新メジャーバージョンとなる Ver.16 がリリースされました。
(現時点では英語版のみのリリースとなりますが、近々日本語版でもリリースされると思います。)
今回のバージョンアップで、Navicat に Data Generation
機能が追加されたので、この機能について確認したいと思います。
Data Generation
機能については、文字通りデータ生成機能となりますが、リファレンスによると、40種類を超えるジェネレーターがあります。
Navicat には 14日間の Free Trial があるので、Navicat Premium Download Trial よりダウンロードして実際にテストデータを生成してみたいと思います。
Data Generation
機能 を使ってみる
MySQL Server 8.0 をインストールした環境を用意し、以下のような2テーブルを作成しておきます。
- 部署テーブル(department)
12345CREATE TABLE <code>department</code> (department_id</code> int NOT NULL AUTO_INCREMENT,department_name</code> varchar(20) NOT NULL,PRIMARY KEY (<code>department_id</code>)) ENGINE=InnoDB;
項目物理名 | 項目論理名 |
---|---|
department_id | 部署ID |
department_name | 部署名 |
- 社員テーブル(employee)
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE <code>employee</code> ( employee_id</code> int NOT NULL AUTO_INCREMENT, last_name</code> varchar(20) NOT NULL, first_name</code> varchar(20) NOT NULL, mail</code> varchar(128) NOT NULL, birthday</code> date NOT NULL, address</code> varchar(120) DEFAULT NULL, department_id</code> int NOT NULL, PRIMARY KEY (<code>employee_id</code>), KEY <code>department_id</code> (<code>department_id</code>), CONSTRAINT <code>employee_ibfk_1</code> FOREIGN KEY (<code>department_id</code>) REFERENCES <code>department</code> (<code>department_id</code>) ON UPDATE CASCADE ) ENGINE=InnoDB |
項目物理名 | 項目論理名 |
---|---|
employee_id | 社員ID |
last_name | 名前(姓) |
first_name | 名前(名) |
メールアドレス | |
birthday | 生年月日 |
address | 住所 |
department_id | 部署ID(外部キー) |
Navicat Premium の Trial版をインストールして、用意した MySQL Server 8.0 をインストールしたサーバに接続しました。
接続設定については、こちらのリファレンスをご参照下さい。
接続後の画面左側のオブジェクトから、作成した2テーブルが存在することが確認できます。
まずは、department
テーブルの右クリックメニューから Data Generation
をクリックします。
表示された画面の Number of Rows to Generate
にはこのテーブルに作成するデータ件数を設定します。
また、画面左の列項目名をクリックすると、各列項目に対して、ジェネレータの設定する事ができます。
department_id
は部署IDを表し、連番を割り当てたい為、Generator には、Sequence を指定しました。
開始番号や、終了番号の指定も可能ですが、デフォルト設定としました。
department_name
は部署名を表し、これに適した Department Generator が用意されていた為、これを使用します。
日本語のテストデータを作成したい為、Languages
には、Japanese(日本語)
のみにチェックを入れます。
その後、Nextボタンをクリックすると、プレビュー画面が表示されます。
Department Generator
には、値の重複を排除するオプションがないので、同じ名前の部門が複数設定されたりしますが、それなりにテストデータとして分かり易いデータが生成されるようです。
Start ボタンをクリックすると、テストデータがロードされ、完了すれば以下のような画面が表示されます。
実際に登録されたテーブルデータを見ると、このようになっています。
次は employee
テーブルのデータを作成します。
employee
テーブルの右クリックメニューから Data Generation
をクリックします。
まずはレコード数を 1,000 件で設定します。
employee_id
は社員IDを表し、連番を割り当てたい為、Generator には部署ID同様に、Sequence を指定します。
last_name
は、名前(姓)を格納するので、Name Generator を指定します。
また、Format Type
には Last Name
、日本人の名前にしたいので、Languages
には、Japanese(日本語)
のみにチェックを入れます。
first_name
は、名前(名)を格納するので、last_name
と同じくName Generator を指定します。
Format Type
には First Name
、Languages
には、Japanese(日本語)
のみにチェックを入れます。
mail
は、メールアドレスを格納するので、Email Generator を指定します。
Domains
にはメールアドレスのドメインに使用する情報を複数設定できますが、デフォルトだと "gmail.com" 等の実際に存在するドメインが存在したりするので、適宜変更するようにしましょう。
birthday
は、生年月日を格納するので、Date Generator を指定します。
また、オプションで日付の範囲指定や、曜日指定をする事も可能となっています。
address
は、住所を格納するので、Address Generator を指定します。
Format Type
には Addless Line 1
、Languages
には、Japanese(日本語)
のみにチェックを入れます。
また、実在するような住所が生成されているようですので、ご使用の場合は注意が必要です。
department_id
は、department.department_id を親キーとする外部キーとなるので、Foreign Key Generator を指定します。
Schema
、Table
、Field
には それぞれ親キーの情報を設定します。
また、ランダムに設定されるよう、Generation Mode
は Random
とします。
その後、Nextボタンをクリックすると、プレビュー画面が表示されます。
Start ボタンをクリックし、テストデータのロードが完了すれば以下のような画面が表示されます。
1,000件のデータを作成しましたが、2、3秒程度で完了し、特にNavicatを起動している端末への負荷もありませんでした。
それでは、テストデータを作成した2つのテーブルからSQLでレコードを抽出してみます。
いい感じのテストデータが作成されている事が分かるかと思います。
まとめ
今回使用したジェネレーター以外にも正規表現等でもデータ生成ができる為、テストデータを作成する機能としては、非常に使い勝手はよいのではないでしょうか。
項目数が多い場合には、各項目に対して一つ一つ設定していくのは、少し大変かと思いますが、一度作成してしまえばプロファイルとして保存できる為、次回以降、作成した情報に手を入れたりする事もできます。
現時点では、Navicatの日本語版の最新バージョンとなる Ver.15 には、Data Generation
機能 はありませんが、Navicatを使用してみたいという方は、是非、14日間の Free Trial を試してみて下さい!