2009-09-04 12 views
1

一連のCSVファイルをインポートして、レコードをAccessデータベースに配置する必要があります。これは、あまりにも大きな問題ではありません。CSVインポート(可変フィールド)

複雑なことは、各CSVファイルの形式が可変であり、フィールドの数が異なる可能性があることに起因します。

これについて考える最も良い方法は、80個のマスターフィールドがあり、各CSVファイルに80個のフィールドの任意のサブセットが含まれることです。あなたが扱っていることを伝える唯一の方法は、CSVファイルのフィールドヘッダーを調べることです。 Accessファイルに書き込まれるデータには80個のフィールドがすべて含まれている必要があります(欠落したフィールドはNULL値として書き込まれる必要があります)。

ホイールを再発明するのではなく、この変数マッピング/インポートを処理するコードを知っている人はいますか?

または、正しい方向の任意のポインタをいただければ幸いです。

答えて

4

.NET用のCSVリーダーライブラリは、LumenWorks'です。 Accessにデータを挿入することはできません。列の違いを処理するコードを書く必要があると思いますが、独自のパーサをローリングするよりも簡単になり、高速になります。

+0

ワークス)は、対応するマスター・フィールドインデックス/ ID /名前の入力フィールドインデックスまたは名前のリストを保存することにより、今後の参考のためのマッピングを救うことができます! LumenWorks、Vinkoを指摘してくれてありがとう! –

0

一般的に、繰り返しデータ転送のための基本的な自動化されたCSVインポートでは、一貫した入力ファイルが合意された仕様になることが期待されます。

ユーザーがアプリケーションにCSVファイルをインポートする場合、CSVファイルにフィールドをリストする(たとえば、最初の行の値を読み取る) ドロップダウンリストを使用して基本的なマッピングを行うことができますフィールドの横にマスター(db)フィールドのリストが表示されます。

あなたは魔法のように

+0

私はCSVファイルの仕様を制御することはできず、そのまま受け入れる必要があります。 直接入力はありません。プログラムはCSVファイルをスキャンして自動的に処理するため、プログラムは個々のヘッダーを調べて出力レコードにマッピングすることで、データベースレコードを構築する必要があります。 – phrenetic

+0

ユーザー入力がない場合は、少なくともフィールド/列ヘッダーが一貫している必要があります。その場合は、ColumnHeader = DBFieldNameリンクを知っているDB内の列マップを作成し、各ファイルの入力マッピングをオンザフライで自動的に生成するだけです。 –

+0

マーク - ありがとう。私は同じ結論に達し、これをうまく実装しました。 – phrenetic

関連する問題