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