2015年5月26日火曜日

OLE DB プロバイダに適用される考慮事項

CSV ファイルの列に数値と文字列が混在していると、以下の問題がある

[HOWTO] Visual Basic または VBA から ADO を Excel データで使用する

> データ型の混在についての注意 > 「スキャンする行数」で説明したとおり、ADO は Excel のワークシートまたは範囲に含まれる各列のデータ型を推測する必要があります (これは Excel のセル書式設定には影響されません)。
> 同じ列に数値と文字列値が混在していると重大な問題が発生することがあります。
> Jet プロバイダと ODBC プロバイダはどちらも、最も数が多い型についてはそのデータを返し、その他の数が少ないデータ型については NULL (空) 値を返します。
> 2 つの型が列内で同数の場合、文字列ではなく数値が返されます。

数値と文字列が混在する列のデータを["(ダブルクォーテーション)]で囲うことで、回避できる。

テキストエディタで置換したり、ツールを使うことで、列データを["]で囲うようにします。


参考サイト:
ADO CSV接続 勝手に型を決めんなよ・・・
OleDbDataAdapter による CSVデータの読込み
Excel CSV I/O

0 件のコメント:

コメントを投稿

【LINQ】 VB.NET で GroupBy する。

VB.NET ソースの改修で、どはまりしたのでメモ。 複数項目でグループ化する際に匿名型を使うときは「Key」と記述しないとグループ化されない。 参考サイト: .NET(VB)LINQをVBで使用する際に注意すること VB.NETでもLINQでGroupByしたい...