ACS1.1.9.9の新機能!複雑なSQLがデータ転送で実行できちゃう!
Question
前回の配信に
「実はまだまだあるACS1.1.9.9の新機能と組み合わせることで、今回の/PLUGIN=script /file=
とあったのですが、どんな新機能でよりよい活用ができるのか気になります。
是非進化したACSの活用方法を教えてください。
Answer
勿論です!
前回の内容と組み合わせることで、より良い新機能とは・・・・/plugin=cldownload です!
昔からあった気がする・・?勘が良いですね・・・・バレましたか・・・とはなりません!
確かに従来の/plugin=cldownloadと組み合わせるだけでも便利に使えます。
しかし1.1.9.9では、この/plugin=cldownload に /sqlfile パラメーターが追加されました。
え?/sqlって前にもあった気が?よくご存じですね・・・
しかしながら、この機能追加は恐らく想像以上のアップデートです。
なんとこれは「SQL クエリを外部ファイルに切り出して、そのファイルを指定してダウンロード処理を実行できる」機能です。
もうちょっと分かりやすく言えば、従来は /sql "SELECT ..." のように 1行で SQL を直書きするしかなく、複雑な SQL を使うと実行が難しかったのですが、これで 複数行の SQL を UTF-8 ファイルに書いて ACS に渡せるようになりました。
◆基本の使い方
-
SQLファイルを作成
※UTF-8 エンコードで保存することがポイントです。
例: query.sql
SELECT CUSTNO, NAME, SUM(AMOUNT) AS TOTAL_AMOUNT FROM MYLIB.SALES WHERE ORDER_DATE BETWEEN '2025-08-01' AND '2025-08-20' AND STATUS = 'COMP' GROUP BY CUSTNO, NAME ORDER BY TOTAL_AMOUNT DESC;
-
/plugin=cldownload の実行
ACS の起動コマンドに /sqlfile を指定します。
acslaunch_win-64.exe /plugin=cldownload ^ /system MYIBMI ^ /user USER1 ^ /pw mypass ^ /sqlfile "C:\acs\query.sql" ^ /outputfile "C:\acs\sales_aug.csv" ^ /datatype csv
/sqlfile → 実行する SQL を記載したファイル(UTF-8) /outputfile → 出力ファイル名(CSVやXLSXなど) /datatype → 出力フォーマット(csv / xlsx / txt など)
◆活用方法の例
-
複雑な SQL の自動化
直書きでは困難な 複数行・JOIN・CTE(WITH句) を含むSQLを扱える
例: 売上明細から部門別・日別の集計を行い、Excelに抽出
WITH DailySales AS ( SELECT DEPTNO, ORDER_DATE, SUM(AMOUNT) AS SALES FROM MYLIB.SALES WHERE ORDER_DATE >= CURRENT_DATE - 30 DAYS GROUP BY DEPTNO, ORDER_DATE ) SELECT * FROM DailySales ORDER BY DEPTNO, ORDER_DATE;
-
運用バッチへの組み込み
SQLファイルを変更するだけで抽出内容を切り替え可能
バッチやスケジューラから呼び出せば、日次・月次レポートを自動生成できます。
例: 毎朝 6時に売上データを CSV に出力して社内共有フォルダへ保存
-
開発・検証環境の切り替え
SQLファイルを同じにしておき、接続先システムだけ /system で切り替えします。
例:
acslaunch_win-64.exe /plugin=cldownload /system DEVIBMI /sqlfile report.sql /outputfile report_dev.csv acslaunch_win-64.exe /plugin=cldownload /system PRODIBMI /sqlfile report.sql /output
そして新機能の /plugin=script と組み合わせると、さらに便利に!
-
/plugin=script と組み合わせ
例: job.txt
/plugin=cldownload /system MYIBMI /user USER1 /pw mypass /sqlfile "C:\acs\query_sales.sql" /outputfile "C:\report\sales.csv" /datatype csv /plugin=cldownload /system MYIBMI /user USER1 /pw mypass /sqlfile "C:\acs\query_stock.sql" /outputfile "C:\report\stock.csv" /datatype csv /plugin=runsql /system MYIBMI /user USER1 /pw mypass /sql "CALL MYLIB.REPORT_COMPLETE_LOG()"
acslaunch_win-64.exe /plugin=script /file=job.txt
→ 複数の SQL 抽出処理をまとめて実行し、最後にログを残すような運用が可能です。
/sqlfile を使えば「SQLを直書きせずに外部ファイル化」できるため、複雑なクエリも管理しやすく、自動化やバッチ処理での活用が格段に便利になります。
by . 大熊猫橋