Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【A5:SQL Mk-2】A5M2cmdの使い方|SQLをコマンド実行してCSV出力する方法

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

A5:SQL Mk-2には、GUI版とは別にコマンドラインから処理を実行できる

A5M2cmd.exe

があります。

これを使うと、

SQLファイルを実行
↓
検索結果をCSV出力

といった処理をバッチ化できます。

夜間バッチやWindowsタスクスケジューラからSQLを定期実行したい場合にも便利です。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

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はかなり便利なユーティリティです。

タイトルとURLをコピーしました