Comment prévenir SSIS de l'importation de données à partir d'un fichier qui existe déjà dans la base de données?
Tous les jours je charger des données csv dans ma table. Et ma table a la colonne de la date, maintenant, j'ai besoin d'utiliser la fonction de restauration, de telle sorte que, si les données existent déjà dans ma table, il a la restauration, autre chose, elle a pour inserts basé sur mon Asofdate paramètre.
Je sais que c'est peu déroutant, laissez-moi être plus clair.
mon tableau a de l'aïd, ename, asofdate colonnes , maintenant, quand je insérer de nouveaux fichier chaque jour, il a à voir si ce fichier est déjà existant dans cette table basée sur asofdate, si des données existent, il doit la restauration des données.
- Ce n'est pas ce que la RESTAURATION est pour. La RESTAURATION est utilisé lorsque vous démarrez une TRANSACTION et quelque chose se produit, ce qui signifie que vous souhaitez annuler tout ce que vous avez fait (à l'opposé de s'ENGAGER). Réponses ici l'espérons vous donner programatic méthodes pour obtenir cette fonctionnalité, mais ce ne sera pas avec la RESTAURATION.
- Que voulez-vous arriver? devrait les doublons être ignorée, et le reste insérée ou si la totalité du lot-elle être refusée?
- ensemble du lot doit être rejeté.
- Bien, alors continuez à lire votre .fichier csv dans une table temporaire, ne
INSERT INTO target_table(...) SELECT ... FROM temp_table;
Si il y a des doublons, l'insertion échoue (et l'ensemble du lot est ignoré) BTW: Vous n'êtes pas très clair au sujet de votreasofdate
colonne. Si c'est pour décrire la validité d'une seule ligne, pourquoi voulez-vous rejeter l'ensemble du lot?
Vous devez vous connecter pour publier un commentaire.
Comme @Diego l'avait mentionné, vous pourriez utiliser un
Lookup transformation
à l'intérieur de la tâche de Flux de Données pour obtenir la fonctionnalité.Votre tâche de flux de données devrait ressembler à quelque chose comme ça. Ici, la source de fichier Plat lit le fichier CSV, puis transmet les données à la Recherche de la transformation. Cette transformation permettra de vérifier les données existantes dans la table de destination (dire le nom de la table est dbo.Destination). La configuration pour la Recherche de la transformation est indiqué dans les prochaines captures d'écran. Si il n'y a pas d'enregistrements correspondants, puis les données à partir de fichier CSV sera envoyé à la Destination OLE DB contraire, les données seront supprimées.
Dans le
Lookup transformation
, vous choisissez la destination de table de base de données sur l'onglet Connexion. Sur la section Colonnes, vous de vérifier toutes les colonnes que vous souhaitez pour vérifier les données existantes. Ici, dans ce cas, les colonnes eid, nom et asofdate à venir à partir de fichier CSV sont validés par rapport aux colonnes de même nom dans la base de données de la table dbo.De Destination. Si l'entrant les valeurs de ces trois colonnes correspondance avec toutes les lignes dans le tableau, les données ne seront pas envoyés plus bas dans le ruisseau.Espère que vous donne une idée.
le terme correct est de ne pas rollback. La restauration est lorsque vous insérez quelque chose et annuler votre transaction. vous ne devez pas insérer les données si elle existe déjà.
Ce que vous avez besoin est une transformation de recherche entre votre DBSource et votre DBDestination. Cette recherche doit vérifier s'il existe des données sur la table de destination et, si non, insérer
Pour ce genre d'exigence que vous pouvez faire usage de DÉCLENCHEUR d'insertion sur la table et lors de l'insertion de données, vous pouvez vérifier les données existent dans la table ou pas , si vous voulez vérifier pour chaque relevé
ou
Avant d'insérer le fichier dans le tableau, vous pouvez faire usage de si il existe de tresorerie, si vous voulez juste pour vérifier les enregistrements existsor pas
comme ce SQL: S'Il Existe, De Mise À Jour D'Autre Insert