Importer des colonnes de tableur Excel dans la base de données du serveur SQL

j'ai une feuille de calcul Excel que je veux importer des colonnes select dans ma table de base de données SQL Server 2008. Le magicien n'a pas offert cette option.

Existe-t-il des options de code faciles?

64
demandé sur user2771704 2008-12-17 23:54:07

15 réponses

une fois connecté à la base de données Sql Server 2005, à partir de la fenêtre D'Explorateur D'objets, faites un clic droit sur la base de données dans laquelle vous souhaitez importer table. Sélectionnez Tâches - > Importer Des Données. C'est un outil simple et vous permet de 'mapper' les données entrantes dans le tableau approprié. Vous pouvez sauvegarder les scripts pour les lancer à nouveau si nécessaire.

50
répondu Tejas 2010-06-09 01:25:23

Microsoft suggère plusieurs méthodes:

  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • SQL Server serveurs liés
  • requêtes distribuées par le serveur SQL
  • ActiveX Data Objects (ADO) and the Microsoft OLE DB Provider for SQL Server
  • ADO et le Fournisseur Microsoft OLE DB pour Jet 4.0

si le magicien (DTS) ne fonctionne pas (et je pense qu'il devrait) vous pourriez essayer quelque chose comme ça http://www.devasp.net/net/articles/display/771.html ce qui suggère de faire quelque chose comme

INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4])

SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4]
FROM OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A;
24
répondu inspite 2008-12-17 22:46:06

cela peut sembler long, mais vous pouvez vouloir regarder en utilisant Excel pour générer INSERT code SQL que vous pouvez passer dans L'Analyseur de requête pour créer votre table.

fonctionne bien si vous ne pouvez pas utiliser les assistants parce que le fichier excel n'est pas sur le serveur

12
répondu Nick Kavadias 2008-12-22 02:41:34

vous pouvez utiliser OPENROWSET, quelque chose comme:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
  'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'

assurez-vous simplement que le chemin est un chemin sur le serveur, pas sur votre machine locale.

7
répondu SqlACID 2008-12-17 21:03:20
go
sp_configure 'show advanced options',1  
reconfigure with override  
go  
sp_configure 'Ad Hoc Distributed Queries',1  
reconfigure with override  
go
SELECT * into temptable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1',
                'SELECT * FROM [Sheet1$]')

select * from temptable
4
répondu abk 2011-06-14 16:11:31

une autre option est d'utiliser VBA dans Excel, et d'écrire une macro pour analyser les données du tableur et de l'écrire en SQL.

un exemple est ici: http://www.ozgrid.com/forum/showthread.php?t=26621&page=1

Sub InsertARecord() 
Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stCon As String, stSQL As String 
Set cnt = New ADODB.Connection 
Set rst = New ADODB.Recordset 

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY" 
cnt.ConnectionString = stCon 
stSQL = "INSERT INTO MyTable (Price)" 
stSQL = stSQL & "VALUES (500)" 

cnt.Open 
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText 

If CBool(rst.State And adStateOpen) = True Then rst.Close 
Set rst = Nothing 
If CBool(cnt.State And adStateOpen) = True Then cnt.Close 
Set cnt = Nothing 

End Sub
4
répondu Cyrus Loree 2014-07-29 05:58:41

par "The wiz" je suppose que vous parlez du "SQL Server Import And Export Wizard". (Je suis aussi assez nouveau donc je ne comprends pas la plupart des questions, encore moins la plupart des réponses, mais je pense que je comprends celui-ci). Si oui, ne pourriez-vous pas prendre la feuille de calcul, ou une copie, supprimer les colonnes que vous ne voulez pas importer, puis utilisez l'assistant?

j'ai toujours trouvé la possibilité de faire ce dont j'ai besoin avec elle et je ne suis que sur SQL Server 2000 (Je ne sais pas comment les autres versions diffèrent).

Edit: En fait je suis en train de le lire et j'ai l'impression d'être en mesure de choisir les colonnes que je veux la carte de lignes dans une table existante. Sur L'écran "Select Source Tables and Views", je vérifie la feuille de données que j'utilise, je sélectionne la "Destination" et je clique sur "Edit"...' bouton. De là, vous pouvez choisir la colonne Excel et la colonne table pour l'associer.

3
répondu Jeff Keslinke 2008-12-17 21:09:41

si vous souhaitez un outil visuel avec interface de bureau incluant la validation .. vous pouvez aimer cet outil Excel. Vous pouvez également utiliser l'outil pour créer des tâches d'édition de données multi-utilisateurs, ou même coller des données au serveur SQL à partir de n'importe quelle source..

comment valider et importer une feuille de calcul Excel dans la base de données SQL Server:

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

3
répondu Richard Briggs 2014-02-05 22:53:14

Microsoft Access est une autre option. Vous pouvez avoir une base de données D'accès locale sur votre machine dans laquelle vous importez les tableurs excel (magiciens disponibles) et le lien vers les tables de la base de données du serveur SQL via ODBC .

vous pourriez alors concevoir une requête dans l'accès qui ajoute des données de la feuille de calcul Excel aux Tables de SQL Server.

2
répondu Troy 2010-02-12 19:40:41

le meilleur outil que j'ai utilisé est http://tools.perceptus.ca/text-wiz.php?ops=7 avez-vous essayé?

1
répondu kajo 2012-06-21 10:27:38

L'assistant d'importation offre cette option. Vous pouvez soit utiliser l'option pour écrire votre propre requête pour les données à importer, ou vous pouvez utiliser l'option Copier les données et utiliser le bouton "Edit Mappings" pour ignorer les colonnes que vous ne voulez pas importer.

0
répondu NYSystemsAnalyst 2008-12-17 21:01:07

Excel + SQLCMD + Perl = exceltomssqlinsert

et vous pouvez utiliser votre Excel comme frond-end à MSSQL db ... Notez la table de troncature au début de chaque fichier sql insert généré ...

0
répondu Yordan Georgiev 2011-04-23 19:55:25

j'ai utilisé DTS (maintenant connu sous le nom de SQL server Import And Export Wizard). J'ai utilisé ce tutoriel qui a fonctionné très bien pour moi, même dans Sql 2008 et excel 2010 (14.0)

j'espère que cette aide

- D

0
répondu Diego C. 2012-03-08 20:55:45

tout d'Abord, essayez la Version 32 Bits de l'Assistant d'Importation. Cela montre beaucoup plus de formats d'importation pris en charge.

arrière-plan: Tout dépend de l'installation de votre bureau (moteurs D'exécution).

si vous n'avez pas Office 2007 ou plus installé, L'Assistant D'importation (32 bits) vous permet seulement D'importer Excel 97-2003 (.xls) des fichiers.

si vous avez le Bureau 2010 et geater (vient aussi en 64 bits, non recommandé) installé, L'Assistant D'importation prend également en charge Excel 2007+ (.xlsx) des fichiers.

pour obtenir une vue d'ensemble sur les durées d'exécution voir 'Microsoft.ACE.OLEDB.12.0' fournisseur n'est pas enregistré sur la machine locale

0
répondu Bernhard 2017-05-23 10:31:22