【BAT】コマンドプロンプトからSQLを発行する
BATファイルでSQL(SELECTだけ)を発行します。
コマンドプロンプトで作業中にマスタの中身を覗きたい時とか、バッチ処理でテーブルの内容をCSVに落としたいときとかにべんり。
[SELECT.bat]
@if (1==1) /* @echo off setlocal if "%~1"=="" goto :USAGE if "%~1"=="/?" goto :USAGE rem ******************************************************************************** :MAIN if "%SELECT-ODBC%"=="" ( echo 環境変数「SELECT-ODBC」が設定されていません set ERRORLEVEL=9 goto :eof ) set SQL=%~n0 %* CScript //nologo //E:JScript "%~f0" "%SELECT-ODBC%" "%SELECT-UID%" "%SELECT-PWD%" "%SQL%" goto :eof rem ******************************************************************************** :USAGE echo USAGE:%~n0 文 echo ODBCで接続しているDBに対し、SELECT文を発行します。 echo. echo 接続先のデータベースやユーザIDは、環境変数で指定します。 echo. echo [環境変数] echo このコマンドの実行には、下記の環境変数の設定が必須です。 echo. echo SELECT-ODBC echo このコマンドで使用するODBCデータソース名 echo SELECT-UID echo このコマンドで使用するODBC接続のUID echo SELECT-PWD echo このコマンドで使用するODBC接続のパスワード echo. goto :eof rem ******************************************************************************** rem */ @end Args = WScript.Arguments; var aOdbc = Args(0); var aUid = Args(1); var aPwd = Args(2); var aSql = Args(3); var connectionString = "dsn=" + aOdbc; if (aUid != "") connectionString += ";uid=" + aUid; if (aPwd != "") connectionString += ";pwd=" + aPwd; var conn = new ActiveXObject("ADODB.Connection"); conn.Open(connectionString); var rs = conn.Execute(aSql); var line = "" // ヘッダ for (var i=0; i<rs.Fields.Count; i++){ line += "\"" + rs.Fields(i).Name + "\","; } WScript.Echo(line.substring(0,line.length - 1)); //データ while(!rs.EOF){ var line = "" for (var i=0; i<rs.Fields.Count; i++){ line += "\"" + rs.Fields(i).Value + "\","; } WScript.Echo(line.substring(0,line.length - 1)); rs.MoveNext(); } conn.Close();
使用例
$ SELECT * FROM MAST01 WHERE ITEM-CD = 01 << 標準出力 >> "ITEM-CODE","ITEM-NAME" "01", "HOGE"