私は8000〜10000の行を持つExcelファイルを持っています。これをC#のxmlに変換し、それをストアドプロシージャに渡してテーブルに挿入します。重複行を無視/キャプチャしている間にバルクデータを挿入する
データベースに既に存在するエントリがある場合は、データを挿入している間は、挿入を破ることなく残りの行を挿入しながら無視したい。
私が考えている解決策の1つは、テーブルに挿入トリガーを作成して、その行がすでにテーブルに存在するかどうかをチェックすることですが、この方法は10,000行で非常にコストがかかります。
他にどんな方法がありますか? - 発見
with p as (<your pivot here>)
insert into Expenses (. . .)
select p.*
from p
where not exists (select 1
from Expenses e
where e.entry = p.entry
);
これはあなたの特定のケースのためにいい作品:以下は、短手コード
SELECT @sql = N'
INSERT INTO Expenses ('+ STUFF(@col,1,1,'') +')
SELECT ' + STUFF(@col,1,1,'') + '
FROM #TEMPTABLE t
PIVOT (
MAX([Value]) FOR AttributeName IN (' + STUFF(@col,1,1,'')+')
) as pvt'
EXEC (@sql)
私は、tempテーブルから重複したデータを削除しないでいいです。私が望むのは、重複したデータをどこか別々にキャプチャしてユーザに戻すことだけです。あなたのソリューションは重複しないデータの挿入に役立ちますが、重複した行を保存するにはどうしたらいいですか? – user728630
@ user728630。 。 。あなたの質問は「私は無視したい」です。これはこれがしていることです。他に何かしたい場合は、重複する行を見つけて返すクエリを作成します。 。 。別のステップとして。 –