SQL Importar duplicates de saltos

Estoy tratando de hacer una carga masiva en una database de SQL Server. El file de origen tiene duplicates que quiero eliminar, así que esperaba que la operación cargara automáticamente el primero y descartara el rest. (Establecí una restricción de key única). El problema es que, en el momento en que se intenta una carga duplicada, todo falla y se revierte. ¿Hay alguna forma en que pueda decirle a SQL que continúe?

Intente insert a granel los datos en la tabla temporal y luego SELECCIONE DISTINCT como @madcolor sugerido o

 INSERT INTO yourTable SELECT * FROM #tempTable tt WHERE NOT EXISTS (SELECT 1 FROM youTable yt WHERE yt.id = tt.id) 

u otro campo en la cláusula WHERE.

Si estás haciendo esto a través de alguna herramienta SQL como SQL Plus o DBVis o Toad, entonces sospecho que no. Si estás haciendo esto programáticamente en un idioma, entonces necesitas dividir y conquistar. Presumiblemente, ejecutar una actualización línea por línea y capturar cada exception sería un process demasiado largo, así que en su lugar podrías hacer una operación por lotes primero en todo el bloque SQL, y si falla, hacerlo en la primera mitad, y si eso falla, hazlo en la primera mitad de la primera mitad. Itera de esta manera hasta que tengas un bloque que tenga éxito. Descarta el bloque y haz el mismo procedimiento en el rest del SQL. Cualquier cosa que viole una restricción eventualmente terminará como una única statement SQL que usted sabe que debe registrar y descartar. Esto debería importarse con el mayor procesamiento posible mientras se eliminan las líneas no válidas.

Use SSIS para esto. Puedes decirle que saltee los duplicates. Pero primero asegúrese de que sean verdaderos duplicates. ¿Qué pasa si los datos en algunas de las columnas son diferentes, cómo sabe cuál es el mejor logging para mantener?