A5:SQL Mk-2には、GUI版とは別にコマンドラインから処理を実行できる
A5M2cmd.exe
があります。
これを使うと、
SQLファイルを実行
↓
検索結果をCSV出力
といった処理をバッチ化できます。
夜間バッチやWindowsタスクスケジューラからSQLを定期実行したい場合にも便利です。
A5M2cmdとは?
A5M2cmdは、A5:SQL Mk-2のコマンドラインユーティリティです。
GUI版のように対話的にSQLを入力するというより、
接続先を指定
↓
SQLファイルを指定
↓
実行
↓
結果をCSV保存
という使い方が中心です。
開発者も「DB付属の対話型コマンドではなく、A5:SQL Mk-2の機能をバッチなどから単発で呼び出すツール」と説明しています。
基本的な使い方
例えば test.sql に、
SELECT *
FROM employee;
と記述しておきます。
SQL Serverへ接続して実行する例は次のような形です。
A5M2cmd.exe "/Connect=__ConnectionType=Internal;ProviderName=SQL Server;UserName=USER;Password=PASSWORD;ServerName=localhost;Port=1433;Database=TESTDB" /RunSQL /FileName=test.sql
正常に実行されると、検索結果が、
Query-1.csv
のようなCSVファイルとして出力されます。
SQLファイル内に複数のSELECT文があれば、
Query-1.csv
Query-2.csv
Query-3.csv
のように複数ファイルが作成されます。
PostgreSQLの場合
PostgreSQLなら、例えば次のような形です。
A5M2cmd.exe "/Connect=__ConnectionType=Internal;ProviderName=PostgreSQL;UserName=USER;Password=PASSWORD;ServerName=localhost;Port=5432;Database=TESTDB;ProtocolVersion=30" /RunSQL /Encoding=UTF-8 /FileName=test.sql
MySQLなどでも、接続文字列を変更して同じように利用できます。
CSVファイル名を指定する
/FilePattern を使用すると、出力ファイル名や出力フォルダを指定できます。
例えば、
A5M2cmd.exe ... /RunSQL /FileName=test.sql "/FilePattern=C:\work\Query-${num}.csv"
とすると、
C:\work\Query-1.csv
C:\work\Query-2.csv
のように出力できます。
A5:SQL Mk-2の開発者からも、/FilePattern に相対パスまたは絶対パスを含める方法が案内されています。
バッチファイルにすると便利
例えば、
@echo off
A5M2cmd.exe ^
"/Connect=接続文字列" ^
/RunSQL ^
/Encoding=UTF-8 ^
/FileName=C:\SQL\daily.sql ^
"/FilePattern=C:\CSV\Query-${num}.csv"
として .bat にしておけば、
Windowsタスクスケジューラ
↓
A5M2cmd
↓
SQL実行
↓
CSV作成
という定期処理にできます。
ただし、接続文字列にパスワードを直接書く場合は、バッチファイルのアクセス権には注意が必要です。
出力したCSVはA5:SQL Mk-2へインポートできる?
ここが気になるところです。
結論としては、
A5M2cmdが出力したCSVは通常のCSVなので、A5:SQL Mk-2のCSVインポートに利用できます。
A5:SQL Mk-2自体がCSV形式のエクスポート・インポートに対応しています。
ただし、
A5M2cmdで出力したCSVなら、そのまま必ず元テーブルへ完全復元できる
という意味ではありません。
SELECT結果のCSVだから注意
/RunSQL が出力するのは、
テーブルのバックアップ専用ファイル
ではなく、
SELECTなどの結果セットをCSV化したもの
です。
例えば、
SELECT
employee_id,
employee_name
FROM employee;
なら、CSVにはこの2列しかありません。
元のテーブルに、
employee_id
employee_name
department_id
created_at
updated_at
があっても、SELECTしていない列は当然CSVには入りません。
また、
SELECT
employee_id AS 社員番号,
employee_name AS 氏名
FROM employee;
のように別名を付ければ、CSVの列名もインポート先テーブルと一致しなくなる場合があります。
そのため、再インポートを前提にするなら、
SELECT *
FROM employee;
など、対象テーブルの列構成を意識してCSVを作成する方が扱いやすくなります。
新しいテーブルとしてインポートすることもできる
A5:SQL Mk-2には、
データベース
↓
CSV/TSVからテーブル生成(インポート)
という機能があります。
CSVの内容からデータ型を推測し、新しいテーブルを作りながらデータをインポートできます。
ただしCSVには、
主キー
デフォルト値
制約
トリガー
正確なデータ型
などの情報は保存されません。
そのため、CSVだけから元テーブルを完全再現することはできません。必要に応じてデータ型などを手動で設定する必要があります。
CSVをバックアップ用途に使う場合
単純なデータ退避なら、
A5M2cmd
↓
SELECT *
↓
CSV保存
でも便利です。
例えば、
SELECT *
FROM customer;
を定期的に実行して、
customer-20260911.csv
のように保存しておけば、Excelで確認したり、A5:SQL Mk-2からデータを再投入したりできます。
ただし、データベースの完全バックアップの代替にはなりません。
テーブル定義、インデックス、主キー、外部キー、シーケンス、トリガーなどは別途バックアップが必要です。
A5M2cmdが向いている用途
A5M2cmdは、例えば次のような用途に便利です。
- 毎日決まったSQLを実行してCSV保存
- 集計結果を定期的に出力
- 運用確認用データを自動取得
- 複数SQLの結果をCSV化
- タスクスケジューラからSQLを実行
- GUI版A5を起動せずに定型処理を実行
特に、
毎朝SQLを実行
↓
CSVを作成
↓
担当者がExcelで確認
といった処理は相性がよいでしょう。
まとめ
A5M2cmdを使えば、
A5M2cmd.exe /Connect=... /RunSQL /FileName=test.sql
という形で、A5:SQL Mk-2のSQL実行をコマンドラインから自動化できます。
結果セットは、
Query-1.csv
Query-2.csv
などのCSVとして保存できます。
このCSVはA5:SQL Mk-2の通常のCSVインポート機能で利用できます。
ただし、
「SQL結果のCSV」と「DBを完全復元できるバックアップ」は別物
です。
データ移行・再投入を目的にする場合は、
列名
列順
データ型
NULL
日付形式
主キー・自動採番列
などを確認してからインポートするのが安全です。
定期的なSQL実行とCSV出力を自動化したい場合には、A5M2cmdはかなり便利なユーティリティです。

