仕事で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….となるようです。
コメント