2017-07-14 1 views
4

Nous avons beaucoup de | (pipe) fichiers plats séparés, que nous traitons sur une base quotidienne dans SQL Server en utilisant un paquet SSIS. Chaque fichier plat est divisé en section d'en-tête, section de contenu et section de pied de page. Nous recevons régulièrement une version plus récente des mêmes fichiers. Nous essayons d'implémenter la fonctionnalité de comparaison de fichiers entre deux versions du même fichier, pour réduire la charge de traitement.Meilleur moyen de comparer le contenu de deux fichiers plats

Quelle méthode sera la plus efficace?

  1. Stocker les deux versions du même fichier dans des tables séparées SQL Server avec colonne de contrôle et de filtrer les lignes pour lesquelles les valeurs de somme de contrôle ne sont pas assorties.

  2. Implémentation de la logique de somme de contrôle similaire en C# ou tout autre algorithme de comparaison disponible en C#.

Vous pouvez suggérer tout autre nouvel algorithme pour obtenir le même résultat. Bien, si vous chargez déjà ces deux dans SQL Server déjà, alors un moyen rapide utiliserait EXCEPT() or INTERSECT() en fonction de ce que votre objectif est de

+0

pouvez-vous coller un petit contenu des fichiers? –

+0

Est-ce que cela a fonctionné pour vous Murali? – scsimon

+0

Verson 1 Fichier: H1 | 11 | 111111111111111 | | 111111111 | AAAAAAA | 2222222 | 20160205 | H2 | 33 | test de test | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 20160205 H3 | 33 | 44 | 55 | 55 | 66 | 77 | Verson 2 Fichier: H1 | 11 | 55555555555 | | 7777777 | bbbbbbbb | 666666 | 20160205 | H2 | 33 | test de test | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 20160205 H3 | 33 | 44 | 55 | 55 | 66 | 77 | –

Répondre

0

select * from version2 
except 
select * from version1 

Ceci renvoie des lignes dans version2 qui ne correspond pas exactement aux lignes de version1. Vous pouvez également sélectionner une seule colonne si vous voulez comparer cela.