BATファイルでSQL(SELECTだけ)を発行します。
コマンドプロンプトで作業中にマスタの中身を覗きたい時とか、バッチ処理でテーブルの内容をCSVに落としたいときとかにべんり。[SELECT.bat]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
@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();
|
使用例
1
2
3
4
5
|
$ SELECT * FROM MAST01 WHERE ITEM-CD = 01
<< 標準出力 >>
"ITEM-CODE","ITEM-NAME"
"01", "HOGE"
|
こんな感じで、全部ダブルクォート区切りのCSVで出力されます。
ファイルにリダイレクトしたらCSVファイルになるよ。
解説
- BATファイルにJScriptを埋め込んで、そこでADO使ってODBC接続してます。
- コマンド名を「SELECT」にしているので、SQL文をそのまま書いているような錯覚に陥ることができます。
こんな感じで。