中小企業で生きていくシステムエンジニアが考えるライフハック・ITツール・投資、人生100年を生き抜く人生戦略、生産性向上をノリックが考える

中小企業で働くシステムエンジニアがライフハック、ツール、投資、人生100年を生き抜く人生戦略、生産性向上を語ります

A5:SQL Mk-2 神ソフト これがないプロジェクトは考えられないと思う位のデータベースツール

転職してから驚いていることの一つが、仕事がOracleを使ったパッケージ開発なんだけどデータベースを参照するのにMS-ACCESS使っている人が多い。10年近く使っているのがA5:SQL Mk-2(以下 A5M2 エーゴエムニと発音する派)でこれなしの開発なんかは考えられないぐらいである。どれくらい良いかを職場の人に説明するためにまとめておく。

a5m2.mmatsubara.com

 

 

 

A5M2の良いところ

Oracle Client不要でつながる。

しかもサーバー側がOracle9、10、11、12、ExaDataとか細かいバージョン違いを気にする必要なし(Oracle18はまだ試したことがない)。これがOracle Client使う場合だとサーバーに合わせたクライアントを使わないとたまにエラーになるときがある。周りの人は各バージョンのOracle Serverにアクセスしようとすると、まずはリモートデスクトップでお目当てのバージョンが入っている仮想PCにアクセスし、そこからSQL Developerなどでアクセスしているから一手間も二手間もかかってしまう。
 
さらにA5M2にはポータブルモードでインストールすることが可能なのが良い。データベースの接続設定を済ませたA5M2フォルダをとっておけばプロジェクトに新しく参画した人にフォルダごと渡せばすぐにDBに接続することができる。
 
大規模プロジェクトだと数百人の人が数十個のサーバーへの接続設定をやる工数が省けるかと思うとありがたい事この上ない。但し、他のデータベースだとクライアントが必要だからそうは簡単にいかないけど。
 

クエリーだって簡単に作れる

自分はSQLを作るのはそんなに気にならないので直書きするタイプだが、Accessの良いところはSQLがあまりわからない人でも簡単にクエリーが作れることだ。だがしかしさすがは神ツール。A5M2にもMS-Accessライクなクエリビルダーがある。SQLが苦手な人にも向いている。
 

A5M2

A5M2のクエリービルダー

フィルタリングもA5M2は簡単

同じくMS-ACCESSのように選択した列で簡単にフィルタリング出来る。ちょっとびっくりするのが論理名でテーブルを表示しているときにでも該当の列でフィルタリングすれば物理名で条件式が設定されるところだ。ちょっと前までその事を知らずに論理名で場所を確認した後、物理名に戻してフィルタリングの条件式を手打ちしていた自分が恥ずかしい。
 

A5M2

フィルタリングの設定

A5M2

フィルタリングされた結果(物理名が恥ずかしいのでモザイク)

ソートも簡単

列をダブルクリックすればソートの切替もできる。ただ、複数列でやろうとすると物理名で設定するのでちょっと面倒。
 

実行計画もA5M2なら簡単に取れる

若かりしころOracle Masterを取得するのと、パフォーマンスチューニングのために呪文のようなコマンドを覚えたのは何だったのかと思うくらいボタン一つで簡単に実行計画が取れる。Full Scanを発生させるようなSQLを書いていないかプログラマが簡単にチェックできる。
 

データ取得も簡単

テーブルの中身をEXCELに簡単にコピペ出来る。自分のお気に入りはCtrl+Cでコピーしてそのままエクセルに貼り付ける方法。そうするとカラムの物理名と論理名が2段で表示される。エクセルのエクスポートするボタンもあるけどそれだとなぜか一つのセルに物理名と論理名が混ざってエクスポートされる。
 

データの登録も簡単 

エクセルからデータを貼り付けてテーブルに挿入することが出来る。MS-Accessと同じ要領である。但し、後述のオートコミットになっている事は注意が必要だ。

A5M2

各種形式でのExportも簡単

特に気に入っているのがInsert文でのエクスポート。本番環境とかステージング環境とか勝手にデータを触れない場合、データの登録を依頼する時に使っていた。

 

SQLの実行も簡単 

 MS-Accessでクエリーを組んでいるとどんどんクエリーオブジェクトが増えていってどれがどれだかわからなくなることがある。その点はA5M2も変わらないがSQL文が素で表示されているからクエリーの中身を開いて見る必要はない。また、カーソルで選択した部分だけを実行することができる。複雑なSQLを組んでいる時に部分的に選択して実行するとどこが悪い箇所が特定がしやすい。
また、最近実行したSQLは保存されていて、履歴から再実行できるようになっている。

A5M2

最近実行したSQLの履歴
SQLを手組しているときには入力補完もしてくれる。(少々重いが)

A5M2

A5M2の入力補完

データ移行でも使える

データ移行するときは元のシステムからエクスポートして新システムにインポートするけど、機能追加でテーブル定義が変わっているとインポートが簡単にできない。そんなときは移行元の古いテーブルをemp_old のような一時的なテーブルをつくってそこに突っ込みたいのだが、インポートコマンドだとテーブル名が違うということで怒られる。

CSVでのエクスポート・インポート機能があるのでテーブル名が違っても関係ない。

 

f:id:norihiko_matsumoto:20190706134058p:plain

f:id:norihiko_matsumoto:20190706134131p:plain

新システム側にインポート

f:id:norihiko_matsumoto:20190706134334p:plain

インポートの細かい設定、対象列とかエンコーディングとか

 

 

A5M2で注意すること

SQL入力支援のピリオドの入力でSQL入力支援を実行するは切っておく

 SQLの入力支援自体は非常にありがたい機能なんだけど、ピリオドを打つと入力支援のためにテーブル名や列名を読み込みに行くのに非常に時間がかかるときがある。自分が覚えているテーブル名.列名 の場合でも問答無用で入力支援が立ち上がろうとしてもっさりな感じになるので切っておく。でもテーブルが数百、カラムの物理名がわけのわからん命名規則のシステムはコメント文で説明をつけておくと入力支援のときにも論理名が出てきて非常に助かる。本当に必要なときになったらCtrl+Spaceを押せばそれで良いと思う。

メインメニューの設定→オプションから

f:id:norihiko_matsumoto:20190621124544p:plain

ピリオドでの入力支援起動は切っておく

 

最大レコード件数には注意する。

初期設定で1万レコードが取得できる最大件数になっている。以前の現場でよくあったのが全件データを取得したつもりが実は1万件しか取っていなくてデータ移行に失敗するとか。それに怒ったお偉いさんが最大件数を5万件ぐらいに設定しとけ!って怒り出すし。それやっても結局5万件超えたら意味ないね。最終的には同じWhere句でCountして最大件数が5万件超えてないかチェックさせられる始末。
 

A5M2

最大件数の上限を上げる

A5M2

上限超えてしまっている場合のAlert

 自動コミットする

初期状態で自動コミットするようになっている。テーブルを開いて参照しかしていないつもりが手が滑ってうっかり更新してしまうことがある。RDBなんだからちょっと変えてもロールバックすればよいだろうと思ってうかつに更新すると痛い目見る。自分だけが使う単体テスト環境でも無い限りはトランザクションを有効にする事をおすすめする。

A5M2

Auto Commitしないように設定

MS-Accessもいい所あるけどね

とりあえず、個人の環境としてデータをインポートして試行錯誤できるのがMS-ACCESSの良いところ。なんか壊れたと思ったらもう一回データをインポートしなおせばいいし。個人の環境だから自分にわかりやすいように日本語でテーブル名や列を定義したりもお構いなし。ただ、データベースごとにODBCの設定しないといけないのは面倒。クエリーも作り過ぎたら整理つかなくなるし。データ量が多いとODBC経由は辛い。

テーブル定義書のリバースエンジニアリング 

最近、新しいプロジェクトに取り組んでいて、旧バージョンのパッケージを最新化する案件をやっているの。まあ、最新版の機能についてはある程度抑えているから大丈夫だろうと思ったら、旧バージョンが無茶苦茶カスタマイズしているわけ。バージョンアップすると言ってもインフラ基盤とかアーキテクチャの更新だけで、その無茶苦茶カスタマイズしているから、パッケージの知識が役に立たないの。

 

そんな時もA5M2があればとりあえず、テーブル定義書をリバース・エンジニアリングできます!サクッとできます。制約とかインデックスとかトリガーもバッチリで目次も自動生成してくれるので助かります。

 

 まとめ

データベースを使った開発をするならA5M2を使ってみよう。

データベースがOracleだったらOracle Client入れるまえにA5M2をいれてクライアント無しでつながる快適さを実感しよう。

注意すべきは上限1万件と自動コミットになっている事。

今の仕事でこのソフトが無かったら多分1時間は残業増えているよ。

 

データ移行するときにDumpファイルを扱うけど、度のユーザーのデータが入っているかわからなくなったときに役立つツールについての記事を書いています。もしよかったらご覧ください。

www.norick-matsumoto.com