web-dev-qa-db-fra.com

Importer des colonnes de feuille de calcul Excel dans la base de données SQL Server

Je souhaite importer une colonne de calcul dans une table de base de données SQL Server 2008 avec une feuille de calcul Excel. L'assistant n'a pas offert cette option.

Existe-t-il des options de code faciles?

64
user47206

Une fois connecté à la base de données SQL Server 2005, à partir de la fenêtre d’explorateur d’objets, cliquez avec le bouton droit de la souris sur la base de données dans laquelle vous souhaitez importer le tableau. Sélectionnez Tâches -> Importer les données . Il s’agit d’un outil simple qui vous permet de "mapper" les données entrantes dans le tableau approprié . Vous pouvez enregistrer les scripts pour les réexécuter à la demande.

50
Tejas

Microsoft suggère plusieurs méthodes:

  • Services de transformation de données SQL Server (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • Serveurs liés SQL Server
  • Requêtes distribuées SQL Server
  • ADO (ActiveX Data Objects) et le fournisseur de base de données Microsoft OLE pour SQL Server
  • ADO et le fournisseur de base de données Microsoft OLE pour Jet 4.0

Si l'assistant (DTS) ne fonctionne pas (et je pense qu'il devrait l'être), vous pouvez essayer quelque chose comme ceci http://www.devasp.net/net/articles/display/771.html qui suggère fondamentalement de le 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
inspite

Cela peut sembler très long, mais vous pouvez envisager d'utiliser Excel pour générer du code SQL INSERT que vous pouvez coller dans l'Analyseur de requêtes pour créer votre table.

Fonctionne bien si vous ne pouvez pas utiliser les assistants car le fichier Excel n’est pas sur le serveur

12
Nick Kavadias

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 votre ordinateur local.

7
SqlACID
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
abk

Une autre option consiste à utiliser VBA dans Excel et à écrire une macro pour analyser les données de la feuille de calcul et les écrire en SQL.

Voici un exemple: 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
Cyrus Loree

Si vous souhaitez un outil visuel avec interface de bureau, y compris la validation .., vous aimerez peut-être cet outil Excel. Vous pouvez également utiliser cet outil pour créer des tâches d’édition de données à plusieurs utilisateurs, ou même pour coller des données sur un serveur SQL à partir de n’importe quelle source.

Comment valider et importer une feuille de calcul Excel dans une 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
Richard Briggs

Je suppose que vous parlez de l'assistant d'importation et d'exportation de SQL Server. (Je suis aussi assez nouveau, donc je ne comprends pas la plupart des questions, encore moins la plupart des réponses, mais je pense avoir compris celle-ci). Si tel est le cas, vous ne pouvez pas utiliser la feuille de calcul ou une copie de celle-ci, supprimer les colonnes que vous ne souhaitez pas importer et utiliser ensuite l'Assistant?

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

Edit: En fait, je suis en train de le regarder et il semble que je sois capable de choisir les colonnes que je veux mapper à quelles lignes dans une table existante. Sur l'écran "Sélectionner les tables et les vues sources", je vérifie la fiche technique que j'utilise, sélectionnez "Destination", puis cliquez sur le bouton "Modifier ...". À partir de là, vous pouvez choisir la colonne Excel et la colonne de la table à mapper.

3
Jeff Keslinke

Microsoft Access est une autre option. Vous pouvez avoir une base de données Access localement sur votre ordinateur dans laquelle vous importez les feuilles de calcul Excel (assistants disponibles) et établissez un lien vers les tables de base de données SQL Server via ODBC .

Vous pouvez ensuite concevoir une requête d'accès qui ajoute des données de la feuille de calcul Excel aux tables SQL Server.

2
Troy
1
Such

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

1
kajo

Excel + SQLCMD + Perl = exceltomssqlinsert

et vous pouvez utiliser votre Excel comme extrémité de frond à la base de données MSSQL ... Notez la table tronquée au début de chaque fichier d'insertion SQL généré ... 

0
Yordan Georgiev

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

0
DCNYAM

J'ai utilisé DTS (maintenant appelé Assistant d'importation et d'exportation du serveur SQL). J'ai utilisé le this tutorial qui a très bien fonctionné pour moi, même pour SQL 2008 et Excel 2010 (14.0)

J'espère que ça aide

-RÉ

0
Diego C.

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 votre installation d'Office (Runtimes Engines).

Si Office 2007 ou une version ultérieure n'est pas installée, l'importation Wizard (32 bits) vous permet uniquement d'importer des fichiers Excel 97-2003 (.xls).

Si vous avez installé Office 2010 et geater (également en 64 bits, non recommandé), le bouton Importer Wizard prend également en charge les fichiers Excel 2007+ (.xlsx).

Pour obtenir un aperçu des environnements d'exécution, voir Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale

0
Bernhard