Méthode recommandée pour importer un .fichier csv dans Microsoft SQL Server 2008 R2?

Quelle est votre méthode recommandée pour l'importation .les fichiers csv dans Microsoft SQL Server 2008 R2?

J'aimerais quelque chose de rapide, comme j'ai un répertoire avec beaucoup de .les fichiers csv (>500 MO répartis sur 500 .les fichiers csv).

Je suis à l'aide de SQL Server 2008 R2 sur Win 7 x64.

Mise À Jour: Solution

Voici comment j'ai résolu le problème de la fin:

  1. J'ai abandonné d'essayer d'utiliser LINQ to entities pour faire le travail. Il fonctionne, mais il ne prend pas en charge l'insertion en bloc, de sorte que ses propos 20x plus lent. Peut-être que la prochaine version de LINQ to entities permettra.
  2. Suivi les conseils donnés sur ce fil, utilisé bulk insert.
  3. J'ai créé une procédure stockée T-SQL qui utilise l'instruction bulk insert. Les données dans une table intermédiaire, est normalisé copiées dans la table cible.
  4. Je l'ai associé la procédure stockée en C# à l'aide de l'LINQ to entities cadre (il s'agit d'une vidéo sur www.learnvisualstudio.net montrant comment le faire).
  5. J'ai écrit tout le code pour faire défiler les fichiers, etc en C#.
  6. Cette méthode permet d'éliminer le goulet d'étranglement, qui est lu des tonnes de données à partir du lecteur et de l'insérer dans la base de données.

La raison pour laquelle cette méthode est très rapide à lire .les fichiers csv? Microsoft SQL Server arrive à importer les fichiers directement à partir du disque dur directement dans la base de données, à l'aide de son propre hautement optimisé routines. La plupart des autres C# en fonction des solutions nécessitent beaucoup plus de code, et certains (comme LINQ to entities) finissent par avoir à pipe les données lentement dans la base de données via le C#-SQL-server lien.

Oui, je sais qu'il serait plus agréable d'avoir 100% pure de code C# pour faire le travail, mais à la fin:

  • (a) Pour ce problème particulier, à l'aide de T-SQL nécessite beaucoup moins de code par rapport à C#, environ 1/10e, en particulier pour la logique de dénormaliser les données de la table intermédiaire. C'est plus simple et plus facile à gérer.
  • (b) à l'Aide de T-SQL signifie que vous pouvez profiter de la patrie, de l'instruction bulk insert procédures, ce qui accélère les choses à partir de 20 minutes d'attente pour un 30 secondes de pause.
Une belle (et p l u s o n n e)! Merci pour l'astuce utile pour moi aussi. Je me demandais pourquoi il serait agréable d'avoir un 100% de code C# pour faire le travail? Pour moi, c'était agréable d'avoir un 100% de T-SQL solution sans code C# à tous 🙂 j'ai utilisé xp_dirtree pour obtenir la liste de mes fichiers CSV. Voir patrickkeisler.com/2012/11/...

OriginalL'auteur Contango | 2011-02-16