[三流君] −−>
[ASPで遊ぶ、失敗する] −−>
[バックナンバー一覧]
−−> No.102 ADO CSV接続 schema.iniを使い型を設定してみた
ADO CSV接続 schema.iniを使い型を設定してみた
本文(発行内容)
ADO CSV接続 schema.iniを使い型を設定してみた
こんにちは、三流プログラマーのKen3です。
今回は、読者2人からヒントをもらった、
schema.iniを使い
ADOのCSV接続の自動で決まってしまうデータの型を指定してみました。
いつもの三流的なアプローチなので、実際はアレンジして使ってください。
※一部でも参考になればいいんだけど・・・
/*
* 1.今回のキッカケ
*/
No.080 Microsoft Text Driver (*.txt; *.csv) で接続してみた
http://www.ken3.org/asp/backno/asp080.html
から
>質問なのですがcsvファイルを接続し、データを吸い上げたときに
>IPアドレスのように111.222.333.444といった物が111.222333444とな
>って上がってきてしまいました。吸い上げた時点で既にそのような形
>式になっていましたのでどうした物かと困っています。掲示板のログ
と、質問をもらった。
No.101 ADO CSV接続 勝手に型を決めんなよ・・・
http://www.ken3.org/asp/backno/asp101.html
で、いろいろと試行錯誤するも、できなかった・・・
読者さんから、
schema.ini
を使ってみては、調べてみては、
とヒントをもらったのでチャレンジしてみました。
/*
* 2.schema.iniって何?
*/
schema.iniって何?
まぁ、拡張子がiniなので、何かの設定ファイルなんだろうけど・・・
読者から教わった
[AC97]VBAから Schema.ini ファイルを作成する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;155512&Product=accJPN
を見ると、
テキストファイルのデータ型を
ファイル単位、フィールド単位で指定するファイルみたいです。
schema.ini
は、
[ファイル名]
ColNameHeader=True
MaxScanRows=0
Coln=ColumnName type [Width #]
と言った構成でTXTやCSVと同じディレクトリに保存しておくみたいです。
見つけた参考資料(下記MSの英語だけど、もしかしたら日本語もあるかも)
Schema.ini File (Text File Driver)
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetschema_ini_file.asp
こいつを指定すれば、CSVファイルで192.168.0.1も文字として扱ってもらえそうですね
/*
* 3.実際にschema.iniを作成してみた
*/
テストで、schema.iniを作成してみたいと思います。
違いをテストしてみたかったので、
test101.csvと中身が一緒のtest102.csvをまず作成しました。
http://www.ken3.org/cgi-bin/test/test102.csv
日付,IP,URL,分数TEST,少数TEST,備考,予備
2004/12/25,192.168.0.1,ken3.org,1/20,1.25,備考の文字,1-2-3
2005-01-08,192.168.0.25,/asp/,1/3,5.10,日付の形式を少し変えた
2005/01/19 17:30,192.168.0.17,vba,2/7,5,時刻を付けた,04-05-06
↑このファイルのフィールドを全てテキストのサイズ99と指定してみます。
作成したschema.iniファイルは下記のような感じです
http://www.ken3.org/cgi-bin/test/schema.ini
[test102.csv]
ColNameHeader=True
Format=CSVDelimited
Col1=日付 Char Width 99
Col2=IP Char Width 99
Col3=URL Char Width 99
Col4=分数TEST Char Width 99
Col5=少数TEST Char Width 99
Col6=備考 Char Width 99
Col7=予備 Char Width 99
↑オイオイ、ホントにこんなんでOKなの?
[test102.csv]まず、ファイル名のtest102.csvを[]で囲ってセクション指定かな。
次に、
ColNameHeader=True
で、ヘッダーありだよと教えてあげて、
さらに
Format=CSVDelimited
で、フォーマットはCSVだよ
そしたら、あとは、項目単位でデータの型を指定してあげる。
ColNって感じで、n番目を作っていきます。
Col1=日付 Char Width 99
Col2=IP Char Width 99
・
・
・
Col7=予備 Char Width 99
ここでは、全てテキストの99としたけど、
CSVは固定サイズじゃないのでサイズは不要かも。
※固定長テキストの時など、いろいろと調査をしてみたいですね
/*
* 4.実行テスト
*/
schema.iniファイルの指定有りと無しを区別するために、
test101.csv(設定なし)
と
test102.csv(schema.ini内で設定有り)
に接続してテストしてみました。
http://www.ken3.org/cgi-bin/test/test102-1.asp
↑実行テストとソースファイル
結果は、192.168.0.1を文字列として認識、
04-05-06も日付ではなく文字列として無事に認識されました。
/*
* 5.終わりの挨拶 </HTML>
*/
今回は、
ADOでCSV接続したときに、
192.168.0.1
が、
192.168
となってしまう件を
読者から教わったschema.iniファイルを作り
CSVファイルのフィールド型を指定してみました。
何かの参考となれば幸いです。
ASP、VBScript勉強中の三流プログラマーのKen3でした。
フィードバック
ASP系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告