web-dev-qa-db-fra.com

Importer des données de feuille de calcul Excel dans une table SQL EXISTANTE?

J'ai une table appelée tblAccounts dont le contenu proviendra d'une feuille de calcul Excel.

J'utilise MS SQL Server 2008 (x64) sur Windows 8.1 (x64)

J'ai essayé d'utiliser SQL Server Import/Export Wizard mais il n'y a pas d'option pour choisir une table existante mais seulement une option pour en créer une nouvelle.

J'ai essayé d'utiliser d'autres méthodes telles que OPENROWSETS

INSERT INTO tblAccount SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\exceloutp.xls','SELECT * FROM [Sheet1$]')

mais m'a donné une erreur:

Msg 7308, niveau 16, état 1, ligne 1 OLE 'Microsoft.Jet.OLEDB.4.0' ne peut pas être utilisé pour les requêtes distribuées car le fournisseur est configuré pour s'exécuter dans un appartement à thread unique mode.

Certaines recherches m'ont dit que cela s'est produit en raison d'une instance 64 bits de SQL Server.

Le problème est que ce transfert de données Excel vers une table SQL doit être effectué à l'aide de SQL Import/Export Wizard uniquement.

Comment puis-je importer une feuille de calcul Excel dans une table SQL existante sans en créer une nouvelle?

Quelques liens que j'ai visités mais qui n'ont pas pu m'aider à résoudre mon problème:

18
Saudate

Saudate, j'ai couru à travers cela à la recherche d'un problème différent. Vous pouvez certainement utiliser l'assistant d'importation de serveur SQL pour importer des données dans une nouvelle table. Bien sûr, vous ne souhaitez pas laisser cette table dans la base de données, je suggère donc d'importer dans une nouvelle table, puis de scripter les données dans le gestionnaire de requêtes pour les insérer dans la table existante. Vous pouvez ajouter une ligne pour supprimer la table temporaire créée par l'assistant d'importation comme dernière étape après la réussite du script.

Je crois que votre problème d'origine est en fait lié à Sql Server 64 bits et est dû à votre Excel 32 bits et ces pilotes ne fonctionnent pas bien ensemble. J'ai rencontré un problème très similaire lors de la première utilisation d'Excel 64 bits.

9
Ron

Vous pouvez copier-coller des données d'une feuille Excel vers une table SQL en procédant ainsi:

  • Sélectionnez les données dans Excel et appuyez sur Ctrl + C
  • Dans SQL Server Management Studio, cliquez avec le bouton droit sur la table et choisissez Modifier les 200 premières lignes
  • Faites défiler vers le bas et sélectionnez toute la ligne vide en cliquant sur l'en-tête de ligne
  • Collez les données en appuyant sur Ctrl + V

Remarque: Souvent, les tables ont une première colonne qui est une colonne ID avec un ID généré/incrémenté automatiquement. Lorsque vous collez vos données, il commencera à insérer la colonne sélectionnée la plus à gauche dans Excel dans la colonne la plus à gauche dans SSMS, insérant ainsi les données dans la colonne ID. Pour éviter cela, gardez une colonne vide dans la partie la plus à gauche de votre sélection afin de sauter cette colonne dans SSMS. Cela entraînera l'insertion par SSMS des données par défaut qui sont l'ID généré automatiquement.

De plus, vous pouvez ignorer d'autres colonnes en ayant des colonnes vides aux mêmes positions ordinales dans la sélection de feuille Excel que les colonnes à ignorer. Cela obligera SSMS à insérer la valeur par défaut (ou NULL lorsqu'aucune valeur par défaut n'est spécifiée).

27
yash vora

Vous pouvez utiliser l'importation de données avec l'assistant et là, vous pouvez choisir la table de destination.

Exécutez l'assistant. Dans la fenêtre de sélection des tables et vues sources, vous voyez deux parties. Source et destination.

Cliquez sur le champ sous la partie Destination pour ouvrir le menu déroulant et sélectionnez votre table de destination et modifiez ses mappages si nécessaire.

6
Hamid Reza

Si vous souhaitez un outil logiciel pour ce faire, vous pouvez consulter ce guide étape par étape:

"Comment valider et importer une feuille de calcul Excel dans une base de données SQL Server"

http://leansoftware.net/forum/en-us/help/Excel-database-tasks/worked-examples/how-to-import-Excel-spreadsheet-to-sql-server-data.aspx

3
Richard Briggs