業務上必要に迫られて今回3つの方法を検証したが、結果的にはMicrosoft.VisualBasic.FileIO.TextFieldParserに軍配が上がった。
方法1)
System.IO.StreamReaderクラスでレコードを1行ずつ読み込み、読み込んだレコードをSystem.String.Splitメソッドを使ってカンマでセパレートし、データテーブルに格納する。
結果)
ダブルクォーテーション中に在るカンマを区切り文字として認識してしまい、一つの文字列が2つの文字列に分けられてしまう現象が発生。でも、実数は正しく読み込まれた。また、コードが多く可読性が低い。
方法2)
OleDbConnectionクラスとOleDbDataAdapterクラスを使い、データテーブルに格納する。
結果)
文字列は正しく読み込まれたが、実数の小数点以下が読み込まれない現象が発生。予めデータテーブルにフィールドを追加しておき、そのフィールドのデータ型にDECIMALを指定しておいても変わらなかった。コードは少なく可読性が高い。
方法3)Microsoft.VisualBasic.FileIO.TextFieldParserクラスと同クラスReadFieldsメソッドを使い、データテーブルに格納する。
結果)
文字列も実数も正しく読み込まれた。コードは少なく可読性が高い。
番外編)
この他にもネットには方法が存在していた。スピードを求めるならば、既存のクラスを使用するのではなく、自力で解析コードを書くことみたいだ。
0 件のコメント:
コメントを投稿