2009-09-14 13 views
2

J'essaie de faire un transfert groupé dans une base de données SQL Server. Le fichier source a des doublons que je veux supprimer, donc j'espérais que l'opération téléchargerait automatiquement le premier, puis rejeter le reste. (J'ai défini une contrainte de clé unique). Le problème est le moment où un téléchargement en double est tenté, le tout échoue et est annulé. Est-ce que je peux juste dire à SQL de continuer?SQL Import ignorer les doublons

+1

peut-être afficher un peu de code, pourrait simplement être sélectionner distinct. – madcolor

+0

@madcolor: les doublons sont sur 'insert', pas sur' select'. – voyager

+0

@voyager - Il insère à partir d'un fichier source qui a des doublons. Je crois que @MadColor suggère de recréer le fichier source pour éliminer les doublons en utilisant la syntaxe select select. – klabranche

Répondre

7

Essayez de gros insérer les données à la table temporaire, puis SELECT DISTINCT comme @madcolor suggéré ou

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

ou tout autre domaine dans la clause WHERE.

1

Si vous utilisez un outil SQL tel que SQL Plus ou DBVis ou Toad, je ne le soupçonne pas. Si vous le faites par programmation dans une langue, vous devez diviser et conquérir. Il est probable que l'exécution d'une mise à jour ligne par ligne et l'interception de chaque exception soit un processus trop long. Vous pouvez donc effectuer une opération par lots sur tout le bloc SQL et, en cas d'échec, le faire sur la première moitié. Faites-le sur la première moitié de la première moitié. Itérer de cette façon jusqu'à ce que vous ayez un bloc qui réussit. Rejeter le bloc et faire la même procédure sur le reste du SQL. Tout ce qui viole une contrainte finira par devenir une seule instruction SQL que vous savez enregistrer et rejeter. Cela devrait importer avec autant de traitement en bloc que possible tout en jetant les lignes invalides.

0

Utilisez SSIS pour cela. Vous pouvez lui dire d'ignorer les doublons. Mais assurez-vous d'abord qu'ils sont de vrais doublons. Que faire si les données dans certaines colonnes sont différentes, comment savez-vous quel est le meilleur dossier à conserver?