2016-04-28 17 views
-1

Ich muss SQL Server duplizierte Zeilen entfernen, wenn Sie die Datei mit eindeutiger Methode in die Datenbank importieren.Entfernen von Duplikaten aus SQL Server-Zeilen mit DISTINCT

HallGroup ist meine Tabelle in der Datenbank. Ich verwende diese SQL-Prozedur:

SELECT DISTINCT * INTO tempdb.dbo.tmpTable 
FROM HallGroup 
DELETE FROM HallGroup 
INSERT INTO HallGroup SELECT * FROM tempdb.dbo.tmpTable 
DROP TABLE tempdb.dbo.tmpTable 

Mit diesem Verfahren funktioniert gut duplizierten Zeilen gelöscht werden, aber das Problem ist, wenn ich versuche, wieder Daten in SQL Server Zeilen zu importieren noch zu duplizieren. Was ich vermisse, also irgendeinen Hinweis?

Wie SQL Server duplizierte Zeilen ordnungsgemäß entfernen beim Importieren von Datei in die Datenbank mit unterschiedlichen Methode?

+0

Sie sehen also eine Duplizierung mit Daten, die Sie bereits in der Tabelle haben? Sie müssen beim Import eine Verbindung zu dieser Tabelle herstellen, um sicherzustellen, dass Sie keine Daten duplizieren –

+0

Ja. Wie verknüpfe ich meine Tabelle beim Import? – Paulius

+0

Ich würde in Erwägung ziehen, eine Staging-Tabelle zu haben, in die Daten geladen werden (jedes Mal abschneiden). dann mache ich eine einfache einfügen mit einem Join –

Antwort

0

Ich bin gerade wieder in SQL, nachdem ich für ein bisschen aus war, aber ich hätte dein Problem nicht so gelöst, dass du versuchst (nicht dass ich komplett verstehe, warum du es so machst), wie ich glaube (selbst wenn es richtig funktioniert) im Laufe der Zeit wird Ihr Prozess jedes Mal länger dauern, wenn Sie es tun, da die Größe des Tisches zunimmt.

Es wäre viel effizienter, wenn Sie die neuen Daten basierend auf dem Fehlen eines Schlüssels eingefügt haben (Sie geben an, dass Sie bereits einen gespeicherten Prozess verwenden). Wenn Sie keinen zu verwendenden Schlüssel haben (was mir kürzlich passiert ist), machen Sie einen. Ich habe gerade ein ähnliches Problem gelöst, während ich Daten aus einer externen Quelle in eine Tabelle importiere und die Möglichkeit von Duplikaten eliminieren wollte. In meinem Fall verknüpfe ich den Namen der externen Quelldatei mit den zu importierenden Daten und verwende diese, um sicherzustellen, dass ich bereits importierte Daten nicht erneut importiere. Ich lade die externen Daten in eine Tabelle unter Verwendung eines dtsx und führe dann einen gespeicherten proc aus, um diese Daten mit einer vorhandenen Tabelle zusammenzuführen. Dies gibt mir den zusätzlichen Vorteil, einen Audit-Trail zu haben, aus dem jeder Datensatz stammt.

Hoffe, das hilft.

Verwandte Themen