仕事でWSHを使ってCSVのデータを抽出することがあったので備忘録。
// ActiveXObjectに任せればなんでも出来ると思っている
var cn = new ActiveXObject("ADODB.Connection");
// Propertiesの HDR=YESはCSVにヘッダーがあるってこと
// FMT=Delimited はCSVファイルだよってこと
var driver = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.;Extended Properties=¥"text;HDR=YES;FMT=Delimited¥";";
// ADODBオブジェクトに接続文字列を渡してあげる
cn.ConnectionString = driver;
cn.Open();
// SQLを発行する
var rs = cn.Execute(sql);
// 抽出したデータの表示
WScript.Echo(rs.Fields("CSVの列名(ヘッダー)").Value);
こんな感じでCSVにクエリを投げられます。
ソートや条件が複雑なときなど、Excelを使うより簡単に出来るかもしれません。
ちなみにSQLの列名はCSVのヘッダー名でいけます。
SELECT 氏名, 電話番号, 住所 FROM CSVのファイル名 WHERE 性別='女'
この様に日本語でもいけます。
そして、クオーテーションで囲まなくてもいけます!!!!!
ちなみに、ヘッダーなし(HDR=NO)の場合は列名はF1,F2,F3….となるようです。



コメント