SQL にロードする前に、schema.ini を使用して CSV ファイルのデータ型/列を検証しています。行にデータ型の不一致がある場合でも、その行はインポートされますが、その特定の不一致セルは空白のままになります。問題がある場合、および/またはエラーレポート (つまり、どの行に問題があるか) を提供する場合に、ユーザーが CSV ファイルをインポートできないようにする方法はありますか?
2 に答える
FileHelpersライブラリをご覧ください:http ://www.filehelpers.com/
これは、csvを含むすべての種類のインポートを実行するための非常に強力なライブラリであり、エラー処理の部分も非常に優れています。
異なるエラーモードの使用FileHelpersライブラリは、3種類のエラー処理をサポートしています。
標準モードでは、何かが失敗したときに例外をキャッチできます。このアプローチは悪いことではありませんが、現在のレコードに関する情報が失われ、が割り当てられていないため、records配列を使用できません。
よりインテリジェントな方法は、ErrorManagerのErrorMode.SaveAndContinueを使用することです。
このようなエンジンを使用すると、records配列に適切なレコードがあり、ErrorManagerにはエラーのあるレコードがあり、どこでも実行できます。
別のオプションは、エラーを無視して、この例で示されている方法を続行することです。
1 engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue; 23レコード=engine.ReadFile(...クリップボードにコピー|プレーンを表示|印刷|?engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue;
records = engine.ReadFile(... records配列には、適切なレコードしかありません。
最善の方法は、ファイルに不一致がないかチェックすることです。ただし、大きなファイルの場合、これは実行できません。テーブルに読み込まれたデータの不一致を確認するために、最初にそれを読み込む必要がある場合があります。これは、ファイルをチェックするよりもはるかに高速です (単純な T-SQL スクリプトを使用して、テーブル内の null をチェックできます)。不一致が見つかった場合は、ユーザーに通知し、テーブルをクリアできます。