備忘録 Windows8 WSH Jscript でCSVファイルに対してSQL発行

WindowsCSVExcelファイルに対して、ADO接続してSQLが発行できるのは
知っていたしプログラムも書いたことあったけど、
Windows8でやってみたら苦戦した。

できたので、忘れないようにメモする。
「64ビットOSでは"Microsoft.Jet.OLEDB.4.0"が使えない」とネットには多く書かれて
いたけど、特に問題なくできた。
Microsoft.ACE.OLEDB.12.0
Microsoft.Jet.OLEDB.4.0
どちらをProviderに指定してもOK。

ただMicrosoft.ACE.OLEDB.12.0を使用するには、Office2007やOffice2010がインストール
されていることが必要。
自分のようにOffice2000を使用している場合は、
http://www.microsoft.com/ja-jp/download/details.aspx?id=13255
からダウンロード&インストールできる。
これはもしかしたら、一切Officeがなくてもインストールできるのかもしれない。

でサンプルコードは以下。
sql.js
======================================================
var dbCon=new ActiveXObject("ADODB.Connection");
WScript.Echo("SQL");
with(dbCon){
 Provider="Microsoft.ACE.OLEDB.12.0";
 //Provider="Microsoft.Jet.OLEDB.4.0";
 //Properties("Extended Properties")="Excel 8.0";
 Properties("Extended Properties")="Text;HDR=YES;";
 Open("C:\\Users\\kouichi\\work");
}
WScript.Echo("SQL");
var dbRst=new ActiveXObject("ADODB.Recordset");
dbRst.CursorLocation = adUseClient;
dbRst.Open("select * from temp.csv", dbCon, adOpenDynamic, adLockOptimistic, adCmdText);
for(var i=1;i<=dbRst.Fields.Count;i++){
 WScript.Echo(dbRst.Fields(i - 1).Name);
}
======================================================
ここで単に
cscript sql.js
とやると「プロバイダが登録されてない」とメッセージが出て動かない。
C:\Windows\SysWOW64\CScript.exe sql.js
とやれば動いた!!

これは今後仕事場のPCが64ビットになった時に、覚えていると便利だ!!