Beekeeper StudioはSQLクライアントとして適度に便利
オープンソースな SQL クライアントソフトの一つに Beekeeper Studio があります。
Electron ベースの GUI ツールで、GPLv3 ライセンスの Community Edition と商用ライセンスの Ultimate Edition が提供されています。
公式サイトで紹介されているように、モダンで簡単に使えて見目が良く、MySQL, PostgreSQL, SQLite, SQLServer 等に対応している SQL クライアントです。
クロス・プラットホームであり、SQL エディタは自動補完で構文強調付き、タブで処理を切り替えられるし、テーブルのソートやフィルタも利用可能、等々。
確かに今時の GUI ツールと言える特長になってます。
個人的には ODBC ドライバや JDBC ドライバ等を必要としない点がお気に入りです。
サポート対象の DBMS は限定されますが、今の私の用途では十分です。
....
macOS にインストールする場合、公式サイトでは Edition の比較表にある Download ボタン(Community Edition の方は強調されてないけど...) をクリックし、DMG ファイルをダウンロードする方法が紹介されています。
私は Community Edition を Homebrew 経由でインストールしました。
$ brew install --cask beekeeper-studio
※現在のバージョンは 3.2.1 です。
....
先日、このような記事を書きました。
ここでは SQLite のデータファイル yubin10.db から sqlite3 を利用して住所データの CSV ファイルを出力しました。
この記事で用いたクエリを Beekeeper Studio で実行してみます。
・住所データを抽出するクエリ
SELECT a.post_app_no AS '番号', a.post_app_name_sei AS '氏名(姓)', a.post_app_name_mei AS '氏名(名)', a.post_app_namekana_sei AS 'フリガナ(姓)', a.post_app_namekana_mei AS 'フリガナ(名)', a.post_app_disp AS 'リスト表示用氏名', a.post_app_disp_kana AS 'リスト表示用フリガナ', (CASE WHEN a.post_app_keisho = 1 THEN '様' ELSE '' END) AS '敬称', a.post_app_zip AS '郵便番号(自宅欄)', a.post_app_address1 AS '自宅住所(都道府県)', a.post_app_address2 AS '自宅住所(市区町村)', a.post_app_address3 AS '自宅住所(番地等)', a.post_app_address4 AS '自宅住所(建物名)', a.post_app_disp_address AS 'リスト表示用自宅住所', IFNULL(r.post_app_name_mei, '') AS '連名1(名:自宅欄)', (CASE WHEN r.post_app_renkeisho = 1 THEN '様' ELSE '' END) AS '連名1(敬称:自宅欄)', c.post_app_category_name AS 'カテゴリ' FROM post_app_adressbook AS a LEFT OUTER JOIN post_app_address_category_tbl AS b ON b.post_app_address_no = a.post_app_no INNER JOIN post_app_address_category_mst AS c ON c.post_app_category_no = b.post_app_category_no LEFT OUTER JOIN post_app_renmei AS r ON r.post_app_no = a.post_app_no ORDER BY a.post_app_no;
Beekeeper Studio を起動して、
- New Connection ウィンドウの Connection Type で SQLite を選択。
- Choose File ボタンをクリックしてファイル選択から yubin10.db を開く。
- Connect ボタンをクリックして接続。
ここで、前述のクエリを貼り付けて、テキスト選択を解除した状態がこちらです。
ここで Run ボタンをクリックすると、クエリの実行結果が表示されます。
抽出した結果を確認するだけであれば、操作は以上です。
ソートやフィルタを試すのもアリです。
続いて、この結果をエクスポートしたい場合、右下の Download をクリックします。
出力形式は CSV, Excel, JSON とクリップボードへのコピーが選択できます。
....
実は今回の作業を行うまで、この Download 機能に気づいてませんでした。
もう 2 年近く Beekeeper Studio のお世話になっているのに、この体たらく。
早速、お試しに CSV と Excel を選択してみました。
まずは CSV ファイルですが、残念ながら私の期待する形式ではありません。
どこかにダブルクオートを付加するオプションでもあれば嬉しいのですが。
しかし、Excel形式 のファイル (.xlsx) では特に問題ありません。
Excel 2019 for Mac で普通に開く事ができました。
元々は住所データを CSV ファイルにした後、別途 Excel に取り込んで保存するつもりでした。しかし、UTF-8 のままだと Excel 2019 for Mac でも文字化けするので面倒です。
直接 xlsx ファイルを生成してくれるおかげで、色々と手間が省けて良かったです。
あとがき
私は RDBMS を管理・操作する際、基本的には各 RDBMS が提供しているコマンドラインツールを優先的に利用しています。
スクリプトを用意すれば、何度も同じ操作を処理できるし、記録も残せるからです。
それでも、お手軽に GUI ツールを利用したい場面もそれなりにある訳で。
ただ、あくまで個人的な都合ですが、macOS では JRE / JDK 環境や JDBC ドライバが必須なツールは利用したくありません。
その点、単体で動作する Beekeeper Studio は作業に最適なのです。
今までの用途は主にクエリの動作確認でしたが、これで Excel 出力ツールとしても活用できそうです。
一方、Linux では OpenJDK 環境を構築済みなので、DBeaver も併用してます。
DBeaver も良いけど、Beekeeper Studio もお手軽で便利ですよ。
....
もう随分前になりますが、Windows 環境での苦労話です。
Java アプリ / JDBC ドライバで問題なくて、何故か某言語 / ODBC ドライバで不具合が発生する件に関わった事がありました。
当時、調査用に提供されてたツール類は Java で作成されたものばかり。
それらのツールではどうやっても再現せず、ほとほと困りました。
最終的にはその言語で調査用コードを書いて、なんとか原因を突き詰めたのですが...
詳細は控えますが、あまりの結末に虚しくなったのを覚えてます。
その出来事以来、対象となる接続方法に合わせてツールを選択するようになりました。
私が仕事で Java に触れる機会は永久にないので、基本的に Java アプリは利用しない。
自分縛りが厳しい気もしますが、可能な限り実戦して今に至ります。
まぁ Java アプリは種類が豊富なので、稀に禁を破るのはやむ無しという事で。