2008-12-17 6 views

Répondre

0

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

+0

Il ne m'a pas donné la possibilité d'importer dans une table existante, juste la base de données et créerait une nouvelle table. (SQLServer 2008) – user47206

+0

Trouvé comment cela fonctionne. Merci. Maintenant j'ai trouvé un plus grand proplem.J'utilise Management studio 2008 et la base de données est 2000. J'ai supposé que c'était faux en 2005. – user47206

+0

Je n'ai pas encore utilisé le studio de gestion 2008 (nous sommes en 2005). Management studio 2005 est rétrocompatible avec 2000. – NYSystemsAnalyst

24

Microsoft suggest plusieurs méthodes:

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

Si l'assistant (DTS) ne fonctionne pas (et je pense qu'il devrait) vous pouvez essayer quelque chose comme ce qui suggère http://www.devasp.net/net/articles/display/771.html fondamentalement quelque chose faire 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; 
+0

Hmm. Cela indique que je dois avoir Excel sur un serveur au lieu de mon PC. est-il un moyen de le diriger vers mon pc? Je n'ai pas encore trouvé cette réponse. – user47206

+0

Lorsque j'essaie cela, j'obtiens l'erreur 'Erreur de syntaxe dans la clause FROM. (Moteur de base de données Microsoft JET) ' – Techboy

+1

Malheureusement, cela ne semble pas fonctionner sur Windows 64 bits –

7

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 e e chemin est un chemin sur le serveur, pas votre machine locale.

+1

nO MANIÈRE D'ACCÉDER À MON MACHINE LOCALE? – user47206

+0

Eh bien, vous pourriez probablement créer un partage sur votre machine locale et mapper un lecteur réseau de votre machine SQL Server à ce partage, et accéder à votre fichier de cette façon .... –

+0

Je reçois l'erreur, Impossible de créer une instance de OLE DB fournisseur "Microsoft.Jet.OLEDB.4.0" pour le serveur lié "(null)". –

3

Par 'le wiz' 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 que je comprends celui-ci). Si oui, ne pouvez-vous pas prendre la feuille de calcul, ou une copie de celle-ci, supprimer les colonnes que vous ne voulez pas importer, puis utiliser l'assistant?

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

Edit: En fait, je le regarde maintenant et je semble pouvoir choisir quelles colonnes je veux mapper à quelles lignes dans une table existante. Dans l'écran «Sélectionner les tables et les vues sources», je vérifie la fiche que j'utilise, sélectionne la «Destination» puis clique sur le bouton «Modifier ...». De là, vous pouvez choisir la colonne Excel et la colonne du tableau pour le mapper.

12

Cela peut sembler long, mais vous souhaiterez peut-être utiliser le code SQL Excel to generate INSERT que vous pouvez utiliser dans l'Analyseur de requêtes pour créer votre tableau.

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

+1

Cela semble toujours être le moyen le plus facile pour moi ... –

+0

Ceci ([link] (http://venerableagents.wordpress.com/2012/03/29/excel-add -ins /)) est une méthode similaire à celle que j'utilise pour insérer des données dans MySQL (la même méthode peut être utilisée ici) – VenerableAgents

2

Microsoft Access est une autre option. Vous pouvez avoir une base de données Access localement sur votre machine sur laquelle vous importez les feuilles de calcul Excel (assistants disponibles) et link to the the SQL Server database tables via ODBC.

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

50

Une fois connecté à la base de données Sql Server 2005, à partir de la fenêtre Explorateur d'objets, faites un clic droit sur la base de données dans laquelle vous voulez importer la table. Sélectionnez Tâches -> Importer des données. Ceci est un outil simple et vous permet de «mapper» les données entrantes dans le tableau approprié. Vous pouvez enregistrer les scripts pour les exécuter à nouveau si nécessaire.

+1

Utilisez SQL Server Management Studio pour établir une connexion à votre base de données. Alors cette réponse a du sens. Cette tâche démarre l'Assistant Importation et Exportation de SQL Server qui inclut Microsoft Excel en tant que source de données. Contrairement à l'exécution de l'application SSIS Import and Export native qui n'a pas cette option} :-(. – Suncat2000

+2

Tâches -> Les données d'importation n'existent pas dans ce menu sur 2008. –

+2

Utilisation de SQL Server 2008 (non R2) I * do * voir Tâches -> Importer des données lors d'un clic droit sur un DB –

0

Excel + SQLCMD + Perl = exceltomssqlinsert

et vous pouvez utiliser votre Excel comme frondes-end à MSSQL db ... Notez la truncate table au début de chaque fichier d'insertion sql généré ...

4
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 
+0

s'il vous plaît formater votre code de manière appropriée. – Trufa

4

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 dans 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 
0

Je l'ai utilisé DTS (maintenant connu sous le nom SQL Server Assistant Importation et exportation). Je la présente tutorial qui fonctionnait très bien pour moi, même dans SQL Server 2008 et Excel 2010 (14.0)

J'espère que cette aide

-D

3

Si vous souhaitez un outil visuel avec l'interface de bureau, y compris la validation .. vous pouvez bien comme cet outil Excel. Vous pouvez également utiliser l'outil pour créer des tâches-éditer des données utilisateur multiples, ou même coller des données au serveur SQL à partir d'une source ..

Comment valider et Importer feuille de calcul Excel à 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

0

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

Si vous n'avez pas Office 2007 ou supérieur installé, l'Assistant d'importation (32 bits) vous permet uniquement d'importer des fichiers Excel 97-2003 (.xls).

Si vous avez installé Office 2010 et geater (également fourni en 64 bits, non recommandé), l'Assistant d'importation prend également en charge les fichiers Excel 2007+ (.xlsx).

Pour obtenir une vue d'ensemble sur les runtimes voir 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

Questions connexes