Bulk Insertステートメントを使用してMAXERRORSを無効にする方法はありますか?
一括挿入するファイルではエラーの数が多くなる可能性があるため、エラーの数を無限に増やしたいと思います(このファイルを制御できず、現在ベンダーと協力して問題を修正しています特定の行)。
それを無効にする方法がない場合、MAXERRORSが処理できる最大数はいくつですか?それは2147483647ですか?
Bulk Insertステートメントを使用してMAXERRORSを無効にする方法はありますか?
一括挿入するファイルではエラーの数が多くなる可能性があるため、エラーの数を無限に増やしたいと思います(このファイルを制御できず、現在ベンダーと協力して問題を修正しています特定の行)。
それを無効にする方法がない場合、MAXERRORSが処理できる最大数はいくつですか?それは2147483647ですか?
通常、外部ソースからデータをインポートする場合、データの問題に非常に注意します。SQLServerはいくつかのソリューションを提供します。多くの人がSSISを使用しています。私はSSISを避けます。その理由の1つは、ユーザーが既に開いているExcelファイルを開くようにすることです。他にもいくつかの欠点があります。
いずれにせよ、データがテキストファイルに入れられたら、データ型が元のテーブルのすべての列を持つステージングテーブルを作成しますvarchar(8000)
。これは必要以上に大きくなる傾向がありますが、十分なはずです。
次に、適切な列を含むテーブルを作成し、次のようなものを使用してデータを入力します。
insert into RealTable (CharColumn, IntColumn, FloatColumn, DateTimeColumn)
select CharColumn,
(case when isnumeric(IntColumn) = 1 and IntColumn not like '%.%' then cast(IntColumn as int end),
(case when isnumeric(FloatColumn) = 1 then cast(FloatColumn as float) end),
(case when isdate(DateColumn) = 1 then cast(DzteColumn as date)
from StagingTable st
つまり、case
エラーを回避するためにステートメントを使用して、SQLコードで型チェックを実行します。タイプが一致しない場合、結果はNULL値になります。次に、StagingTableを使用してデータベースの値を調査し、問題を理解できます。
また、RealTableには、常に次の列があります。
これらは、しばしば役立つデータに関する追跡情報を提供します。