- - PR -
Microsoft Jet OLE DB Providerを使ってCSVファイルを読み込んだときのDataTypeについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-21 14:46
Microsoft Jet OLE DB Providerを使ってCSVファイルを読み込みます。
OleDbDataReaderのGetSchemaTableメソッドを使って列メタデータを取得し、それをDataGridViewに表示させます。 表示された結果を見ますと、DataTypeに割り当てられる型が意図しない型になっていることがあります。 下記テストプログラムを下記テストデータを使って実行させると テストデータが全て「英字1文字+数字」の形式ですので文字型の扱いになり 全てがSystem.Stringになるものと考えておりました。 しかし、実行結果は、"F005"、"K005"、"S005"がSystem.StringではなくSystem.Decimalになります。 なぜ、その3つがSystem.Decimalになってしまうのか、原因を調査していますが、発見できず困っております。 原因をご存知の方がいらっしゃいましたら教えていただけないでしょうか。 よろしくお願いいたします。 [環境] WindowsXP SP2 Visual C# 2005 [テストプログラム]
[テストデータ] ※1行目はヘッダとします。 ---a2z.csvの内容-------------------------------------------------------------------------- A005,B005,C005,D005,E005,F005,G005,H005,I005,J005,K005,L005,M005,N005,O005,P005,Q005,R005,S005,T005,U005,V005,W005,X005,Y005,Z005 A005,B005,C005,D005,E005,F005,G005,H005,I005,J005,K005,L005,M005,N005,O005,P005,Q005,R005,S005,T005,U005,V005,W005,X005,Y005,Z005 ------------------------------------------------------------------------------------------ | ||||||||
|
投稿日時: 2007-05-21 16:17
どうも、るぷ犬です。
直接の回答になっていませんが…。 データ部分を"(ダブルクォーテーション)で括ると、すべて文字型になりました。 どうやら、何行かのデータ部分で、判別しているようです。 なぜ、"F005"、"K005"、"S005"がSystem.Decimalになるのかはわかりません(すみません)。 あと、こんなQ&Aもありました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20039&forum=7&3 | ||||||||
|
投稿日時: 2007-05-21 18:18
るぷ犬様
ご回答ありがとうございます。 私の方でも同じようにデータ部分を"(ダブルクォーテーション)で括って試したところ 文字型になることを確認しました。
こちらの内容は私も確認しました。 Schema.iniを設定すれば意図した型で読み込ませることが可能なことも確認しました。 今回の場合、CSVファイルと同じフォルダに以下の内容のSchema.iniを設定しました。 ---Schema.iniの内容-------------------------------------------------------------------------- [a2z.csv] ColNameHeader=True CharacterSet=OEM Format=CSVDelimited Col1=A005 Text Col2=B005 Text Col3=C005 Text Col4=D005 Text Col5=E005 Text Col6=F005 Text Col7=G005 Text Col8=H005 Text Col9=I005 Text Col10=J005 Text Col11=K005 Text Col12=L005 Text Col13=M005 Text Col14=N005 Text Col15=O005 Text Col16=P005 Text Col17=Q005 Text Col18=R005 Text Col19=S005 Text Col20=T005 Text Col21=U005 Text Col22=V005 Text Col23=W005 Text Col24=X005 Text Col25=Y005 Text Col26=Z005 Text ------------------------------------------------------------------------------------------------
もし、他に何かわかりましたら、引き続き、ご回答いただけると助かります。 よろしくお願いいたします。 |
1