importation de fichier csv/excel en base de données sql asp.net
Je suis en train de créer un projet avec asp.net visual studio 2008 /SQL 2000 (2005 à l'avenir) à l'aide de c#.
La partie la plus délicate pour moi, c'est que la base de données existante schéma change souvent et que l'importation des fichiers colonnes devront être jumelés avec la db existante schéma, car ils ne peuvent pas faire partie d'un match sur l'un des noms de colonne. (Il y a une table de recherche qui fournit les tableaux de schéma avec des noms de colonne, je vais utiliser)
J'explore les différentes façons d'aborder cette, et besoin de quelques conseils d'experts. Est-t-il déjà des contrôles ou des cadres que je peux tirer de rien faire de tout cela?
Jusqu'à présent j'ai exploré FileUpload .NET de contrôle, ainsi que certains 3rd party télécharger les contrôles pour accomplir le charger comme SlickUpload mais les fichiers téléchargés doivent être < 500 mo
Partie suivante est la lecture de mon fichier csv /excel et l'analyse pour l'affichage à l'utilisateur, de sorte qu'ils peuvent correspondre avec notre db schéma. J'ai vu CSVReader et les autres, mais pour excel les plus difficiles depuis que j'ai besoin pour prendre en charge différentes versions.
Essentiellement à L'utilisateur d'effectuer cette importation d'insertion et/ou de mettre à jour plusieurs tables à partir de ce fichier d'importation. Il existe d'autres exigences préalables, comme l'enregistrement correspondant à mais et aperçu des données sur les importations, mais je souhaite obtenir par le biais de la compréhension de la façon de le faire en premier.
Mise à jour: j'ai fini par utiliser csvReader avec LumenWorks.Cadre pour télécharger les fichiers csv.
OriginalL'auteur kiev | 2009-01-28
Vous devez vous connecter pour publier un commentaire.
Découvrez l'excellent FileHelpers bibliothèque - t-il un article sur CodeProject à ce sujet, et il est hébergé ici.
C'est de la pure C#, et il peut importer peu près n'importe quel plat de fichier, CSV, et il traite avec Excel, trop. L'importation est totalement configurable: vous pouvez définir des choses comme les séparateurs de lignes et/ou colonnes pour sauter, et ainsi de suite - beaucoup d'options.
J'ai utilisé avec succès dans divers projets et il fonctionne parfaitement - fortement recommandé.
OK, je vois votre problème - aucune idée de comment vous pourriez éventuellement résoudre si facilement, si 🙁 quelque Chose de totalement dynamique.... pas exactement facile des choses à faire! Bonne chance avec votre recherche.
OriginalL'auteur marc_s
Vous pouvez facilement créer une IDataReader sur un fichier Excel ou CSV (voir http://support.microsoft.com/kb/316934).
Êtes-vous à l'aide de SQL Server comme moteur de base de données? Si oui, vous pouvez utiliser le SqlBulkCopy classe (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx) pour prendre efficacement votre IDataReader, mapper les colonnes appropriées, et de stocker les résultats dans votre base de données.
Ah droite. Si vous avez besoin de faire les deux insertions et mises à jour? SqlBulkCopy est idéal pour l'efficacité de l'insertion d'un grand nombre de données dans votre base de données, mais ne gère pas les mises à jour directement. Vous pouvez résoudre ce problème avec une mise en scène de la table, et certains SQL supplémentaires pour déplacer des données dans la table que vous voulez vraiment modifier.
OriginalL'auteur Antony Perkov
Je présume qu'il peut exister certains robuste et souple à outils pour vous aider avec ce potentiellement très complexe de l'application que j'espère que quelqu'un aura point de vous.
Dans le temps de le dire, voici une fonction que j'ai trouvé utile pour convertir un fichier excel pour une DataTable. Cette version ne regarde que la première feuille de calcul. Il pourrait servir de point de départ. À quelque chose de similaire avec les fichiers csv ne devrait nécessiter la modification de la chaîne de connexion.
OriginalL'auteur HectorMac
FileHelpers est votre ami. J'ai utilisé avec bonheur, pour plusieurs projets et il m'a sauvé beaucoup de chagrin et de travail
OriginalL'auteur Rad
Je suis en utilisant csvReader de LumenWorks.Cadre pour le téléchargement et importation de fichiers csv dans une table sql et un DataTable dans le mémoire que je crée en fonction des colonnes importés.
J'ai aussi la carte utilisateur les champs dans l'interface utilisateur et de procéder à la validation et à préparer les données pour l'importation par l'étiquetage de chaque enregistrement comme insert/update/erreur. J'ai ensuite créer/remplir DataSet fortement typé pour chaque table sera affectée, et de construire les requêtes insert/update pour les entreprises de la Bibliothèque UpdateDataset() la méthode.
Puis-je soumettre l'opération à insérer/mettre à jour la base de données. –
La cartographie est une grille avec 4 colonnes. ( import champ nom de la table de destination, la destination, le nom du champ, de l'ignorer, le match d'état), avec table de destination et les noms de champ étant sélectionne d'actualisation sur la base du tableau sélectionné. J'remplir dynamiquement le sélectionne. D'abord sélectionner combo est renseignée avec la valeur 1 si la correspondance est trouvée, ou s'il vous plaît sélectionnez s'il ne l'est pas. ignorer permet à l'utilisateur d'ignorer le champ. match statut est si un champ a été auto-mappé
OriginalL'auteur kiev