[三流君] −−> [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系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.102を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告