S.Kudoをフォローする

A5:SQL Mk-2(A5M2)よく使う・たまに使う・そのうち使う便利機能

開発環境・ツール

A5:SQL Mk-2(A5M2)はフリーソフトでありながら高機能なかつ汎用的なSQLクライアントツールです。
弊社でもER図作成だったり、開発時のSQLクライアントツールとして利用しています。

一番の特徴は「高機能」であること。
詳細は公式ページを参照いただきたいが、CSVでのデータインポート、エクスポートはどのDBでも同じ動作で行え、GUIで行えることから利用している会社も多いのではないでしょうか?

今回はそれ以外の部分で特徴的で便利な機能を使用頻度毎にまとめてみました。

なお、サンプルデータはMySQLの公式にあったDocumentationから持ってきました。
データは下記のようなものです。

よく使う機能

ソースコード整形

A5M2ではソースコードの整形が容易に行えます。
対象を選択し、右クリックで「ソースの整形」を選択することで整形してくれます。
Laravelのデバッグツールから吐き出されるSQLは1行なため、整形するためにA5M2を起動し、整形して確認することが多いです。

また、JSON形式のテキストデータも整形が可能です。
操作方法は上記と同じ。
これによって、postmanでリクエストデータを記載する際に、整形したきれいな形で貼り付けられます。
postmanについては以前の記事(PostmanでAPIテスト)を参照してください。

検索結果のInsert文出力

検索結果に対して右クリックから出るメニューの「結果セットのInsert文エクスポート」を選択すると、検索結果のInsert文を作成してくれます

簡単なテストでデータをいじる前にバックアップとして取っておいて、後で戻すときには重宝します。
それだけを行うのであればExportとInportでもいいのですが、こちらの方が手間がかからないので単テーブルにはこちら、いくつかの関係するテーブルのバックアップとしてはExportを使うことが多いです。

たまに使う機能

ER図タブ出力、入力

A5M2ではER図を作成できます。また、テーブルからER図を作成したり、ER図から仕様書を作成等ができます。
弊社ではLaravelでマイグレーションやモデルを作成する際にER図が必須となっており、A5M2でER図を作成しています。
ただし、1つ難点があり、各テーブルのプロパティでの入力がしずらいと感じています。
そんな時はざっくり作成したものをExcelに出力し、Excelで編集したものを張り付けています。

A5M2ではER図のプロパティをタブ区切りでクリップボードに保存することが可能です!
右下のボタン(下図の赤枠)を押下することでコピーできます。
※なお、編集しているのはサンプルデータにない追加しようとしているデータです。

Excel上で編集したデータ(タブ区切りデータ)は、コピーしたボタンの右側のボタンを押下すると入力できます。
ただし、選択していた場所に『挿入』することになるため、既存のデータがある場合は重複することに注意してください。

書式付きコピー

これはExcel等に色などがついた見やすい状態で貼り付けることができるといったものです。
分析を行う際に概要分析としてDBから抽出したデータをExcelでやることがたまにありますが、抽出したデータがどういうものか後でわからなくなることを防ぐため、SQL文も合わせてExcelに張り付けておいています。
その時に見やすくなるだけ、と言われればそうですが、その通りです・・・

A5M2側の操作はいたって簡単でコピーするとHTML形式でのコピーがされているそうです(Ver2.16.0 beta24以降)。
ポイントはHTML形式を受け入れられるアプリケーションであるかどうかだけ。受け入れられないものはプレーンテキストとして貼り付けられます。

そのうち使う機能

SQL結果の差分出力

SQLを2回実行し、その差分を自動で取得してくれる機能があります。
操作方法としては、下図の赤枠を押下すると「SQLの比較実行」のダイアログが出ますので、それに従ってクリックしていくだけです。

差分については下図のように色付きで表示されます。
今回は1回目実行した後に更新処理を実行したのちに、2回目を実行しています。

用途としてはいろいろ考えられますが、多数行の単項目更新処理の確認、例えばCSVアップロード時のテスト等で使えそうだと思っています。
まだちゃんとこの機能は使っていませんが、いろいろと活用は出来そうな気がします。

ダミーデータ作成機能

A5M2ではダミーデータを一気に作成する機能があります。
下図の赤枠を押下するとどういったフォーマットで作成するかのダイアログが出てくるのでそこで設定します。

なお、日本の人物名やEmail等いくつかのフォーマットが設けられています。
詳細はヘルプを参照してください。

ただし、今回作成しようとしたのは都市毎の人口推移のトランザクションデータです。
以下のイメージですが、どうやっても(yyyymmを固定で1月毎に作成しようとしたら、CityIDがただの連番になって紐づけができなくなるし、かといってIDは連番にしなければならないし)作成することは叶わなかったです。
※Excelでデータを作って入れた方がこのケースは早い!

IDCityIDyyyymmPopulation
11202001100,000
21202002100,100
・・・
221202110101,000

あくまでダミーデータ作成機能として捉えた方が良いです。
それでもユーザーマスタとかであれば十分なデータが作成できるような気がします。
ちなみにLaravelであればFakerがあるのでそれをうまく使えば今回のようなデータやもっと複雑なテストデータの作成が可能です。
詳細は下記を参照してください。
【Laravel】 ダミーデータを自動生成しよう ~前編~
【Laravel】 ダミーデータを自動生成しよう ~後編~

まとめ

今回はA5M2での便利機能をまとめてみました。
どうでしょうか?
ものによっては生産性を上げるための一つのアイデアになってもらえればと思っています。