PrismBox > Tips >

 
ASP Tips
 
No.0001 CSVファイルにADOでアクセス
CSVファイルにSQL文を発行してデータを処理するにはODBCの「Microsoft Text Driver」を使用します。 次の例では「c:\data\csv\test.csv」から取得したデータを2次元配列「arrData」に取得しています。
Dim objConn, objRS            ' ADO用
Dim strDir, strCsv, strSql    ' フォルダへのパス, ファイル名, SQL文
Dim arrData                   ' 結果取り込み用2次元配列

' フォルダとファイル名をセット
strDir = "c:\data\csv"
strCsv = "test.csv"

' オブジェクトをセット
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

' 接続文字列を作成
objConn.ConnectionString = "Provider=MSDASQL;" & _
    "Extended Properties=""DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & _
    "DBQ=" & strDir & """"

' SQL文を作成
strSql = "SELECT * FROM " & strCsv & " WHERE Category = 1 ORDER BY Number"

' 接続を開く
objConn.Open

' レコードセットを開く
objRS.Open strSql, objConn

' レコードセットの内容を2次元配列に取り込む
arrData = objRS.GetRows()

' レコードセットと接続を閉じる
objRS.Close
objConn.Close

' オブジェクトを解放
Set objRS = Nothing
Set objConn = Nothing
「ConnectionString」で「DBQ=」にCSVファイルが入っているフォルダを指定します。 そして、SQL文の中で、通常はテーブルを指定する箇所でCSVのファイル名を指定します。 「Microsoft Text Driver」ではデータベースがフォルダで表され、その中のテーブルがファイルで表される、と考えることができます。
この例ではRecordsetオブジェクトの「GetRows」によって「arrData」にデータを入れるようになっているので、これを2重ループでテーブルに書き出したりして利用します。