2011-09-27 5 views
0

Plusieurs approches:Quelle est la meilleure façon de télécharger un fichier CSV dans une table MS SQL?

  1. Utiliser SQL en vrac Importation stored proc et appelez la procédure stockée avec le chemin du fichier
  2. Utilisation SqlBulkCopy dans dll System.Data.SqlClient
  3. Lire la ligne de fichiers en ligne, puis insérez dans une table rangée par rangée
  4. D'autres façons?

Lequel est le meilleur? Je veux juste que l'utilisateur sélectionne un fichier de la page Web asp.net. Et puis cliquez sur le bouton Télécharger pour stocker le fichier dans la base de données.

Deuxièmement, dois-je déplacer le fichier dans la mémoire du serveur avant que le fichier ne soit copié dans la table db?

+1

Je voterais pour # 2. C'est simple, et gère l'injection SQL potentielle (qu'une lecture ligne par ligne peut ou non, selon la façon dont elle est codée) et efficace. – David

Répondre

0
  1. La base de données ne connaîtra pas le fichier car tout devrait être découplé et superposé. L'enregistrement du fichier vers un emplacement partagé les frais généraux et ajoute ups bien rangé etc

  2. Oui

  3. Certes, vous voulez que ce soit une opération atomique. 10k lignes seraient 10 allers-retours avec une transaction côté client en cours d'exécution. Si ce n'est pas atomique, alors vous aurez besoin de tables de mise en scène et de rangements

  4. Parse dans C#, envoyer à la base de données avec un table valued parameter. Sinon, probablement rien de pareil et/ou réaliste ...

+0

merci. dois-je déplacer le fichier dans la mémoire du serveur avant que le fichier ne soit copié dans la table db? – InfoLearner

+0

Si vous avez besoin de transformations complexes des données (et je veux vraiment dire complexe), alors appeler un paquet SSIS pour faire le travail est une autre possibilité. – HLGEM

+0

@KnowledgeSeeker: er .. pas vraiment. Par exemple, vous pouvez utiliser un lecteur de données sur un fichier CSV, ce qui constitue l'entrée de SQLBulkCopy. Je n'ai pas fait les bits .net moi-même: juste les aspects SQL. Si vous voulez dire "est-ce que je traite dans le serveur Web", alors envoyez à SQL Server "alors oui, vous aussi. – gbn

Questions connexes