2

わかりました、C# アプリで csv ファイルをインポートして解析しています。簡単な ReadLine() を実行してコンマで分割することから始めましたが、一部のテキスト フィールドにコンマが含まれていることがわかりました。そこで、独自の分割機能をロールバックし始めました。幸いなことに、「おいバカ、誰かがすでにこれをやったのだろうか?」のほんの数分前でした。ライトが点灯し、数分間検索した後、ディレクトリへの OleDb 接続を実行して、その方法でインポートできることに気付きました。ファイル名にコンマと括弧が含まれるいくつかのファイルに遭遇するまで、それはチャンピオンのように機能しました。それからそれは爆発しました。そのようなファイルからインポートするための提案はありますか? いいえ、入力ファイル名を制御することはできません。一部は CD から直接読み込む可能性が高いため、ファイル名を一時的に変更することはできません。

4

3 に答える 3

4

私はこのCsvReaderを使用しましたが、非常にうまく機能します。

于 2008-11-05T14:50:13.453 に答える
1

これらのファイルを %TEMP% フォルダーにコピーし、名前を付けて create by Path.GetTempFileName(). 後でそれらを削除するには、すべてのファイル名を追跡する必要があります。

あまり効率的ではありませんが、機能します;-)

于 2008-11-05T14:48:32.237 に答える
0

コンマで分割できますが、二重引用符で始まり二重引用符で終わるフィールドのペアを検索してデータをマッサージし、それらを再結合します。

二重引用符に遭遇したときに quoteFound ブール値をオンまたはオフに設定しながら、カンマを探して手動で行をたどることができます。

最初にソースをアプリケーション ディレクトリにコピーし、最後に「.csv」を追加してすべてのファイルの名前を変更します。

私はこれを正規表現を使って楽しく巧妙な方法で行ったと確信していますが、それがどのプロジェクトであったかを理解できないため、提供するコードがありません。

ETA: また、SQL Server を読み込んでいる場合は、SqlBulkCopy クラスを使用して、必要に応じてクエリを実行できると思います。

于 2008-11-05T14:51:21.017 に答える