2013-10-10 23 views
6

Ich muss einen Prozess erstellen, um eine Excel-Tabelle mit mehreren Registerkarten in SQL Server 2008R2 zu importieren. Jede Registerkarte wird eine andere Tabelle in der Datenbank sein. Dies muss wöchentlich erfolgen und Importe sollten automatisiert werden. Im Idealfall möchte ich die Tabelle in einen Ordner [oder haben einige Praktikanten tun] Pop und SQL haben eine Prozedur, die in diesem Ordner sieht, und fügt die Daten zu den Tabellen in dieser Datenbank. Ich möchte auch eine andere Tabelle haben, die die Importe aufspürt und sie mit Datum versieht. Ich habe wirklich keine Ahnung, wo ich überhaupt anfangen soll, da ich ein ziemlich großer Noob bin, wenn es um tsql geht.Importieren von Excel nach SQL Server 2008

Antwort

2

Wenn Sie ausschließlich auf TSQL, die beiden oben genannten Antworten, die Sie zeigen einige Ideen begrenzt sind. Wenn Sie Zugriff auf Data Tools oder Business Intelligence mit SSIS haben, können Sie es mit der Annahme automatisieren, dass jedes Blatt in der Excel-Arbeitsmappe jedes Mal übereinstimmt. Mit SSIS verwenden Sie einen Datenflusstask und jedes Blatt wird in die gewünschte Tabelle importiert. Wenn Sie die nächste Woche für die Datei bereit sind, legen Sie sie in den Ordner und führen das SSIS-Paket aus.

Wenn sich jedoch die Blattnamen ändern (z. B. eine Woche Blätter heißen Katzen, Hunde, Regen und nächste Woche Schwefel, Feuer, Hölle), würde das Paket kaputt gehen. Wenn sich ansonsten nur die Daten innerhalb des Arbeitsblatts ändern, kann dies mit SSIS vollständig automatisiert werden.

Beispiel Artikel: https://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server---10-steps-to-follow/

+0

Ich las den Artikel und es scheint ziemlich stra früh. Würde ich für jede Registerkarte \ Tabelle einen anderen Datenflusszweig erstellen? – d90

+0

@NicholasJDininno Bei mehreren Blättern hätte ich eine Datenflusstask und innerhalb dieser Datenflusstask mehrere Excel-Quellen mit mehreren ADO.NET- oder OLE DB-Verbindungszielen. Wenn Sie wählen, können Sie mehrere Datenflüsse ausführen. Es liegt an dir. – Question3CPO

5

Es gibt einen schönen Artikel von Microsoft - http://support.microsoft.com/kb/321686 - der die beteiligten Prozesse umreißt.

Der Prozess ist einfach

SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
    'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$] 

Wo XLImport3 die Tabelle, die Sie in importieren möchten und die Datenquelle ist die Excel-Tabelle Sie importieren möchten.

+0

Sie benötigen die Verwendung von 'Ad Hoc Distributed Queries' von sp_configure, um mit zu ermöglichen, zu verwenden 'OpenDatasource' – illumi

2

Unten ist der Code zum Einfügen von Daten aus einer CSV-Datei in eine bestimmte Tabelle. Ich weiß nicht, was die vollständigen Anforderungen für das Projekt sind, aber wenn ich Sie wäre, würde ich einfach jede Tabelle in eine andere Datei trennen und dann einfach eine Prozedur ausführen, die Daten in jede der Tabellen einfügt.

BULK 
INSERT TABLE_NAME 
FROM 'c:\filename.csv' 
WITH 
(
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 

insert into import_history ('filename', 'import_date') values ('your_file_name', getdate()) 

Auch für die Tabelle, die Importe und zeitstempelt sie verfolgt, könnte man nach jeder Masseneinfügung einige Daten in dieser Tabelle legen Sie einfach wie oben zu sehen.

Auch hier ist ein Link auf Bulk-Einfügen aus einer CSV-Datei Tutorial, das auch helfen können: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

0

Es ist sehr einfach. Rechtsklick auf die Datenbank in SQL Server (2008), wählen Sie Tasks und wählen Import Data

enter image description here



nun die DataSource-Microsoft Excel ändern. Wählen Sie den Pfad der Excel-Datei aus, indem Sie auf die Schaltfläche Browse klicken und auf Next klicken.

enter image description here



Wählen Sie die Sql Server instance und entschied sich für die Datenbank, auf die die Excel importiert werden.

enter image description here



Select Copy data from one or more tables or views und Next klicken.

enter image description here



nun die Blätter auswählen, um zu Sql Server importiert werden.

enter image description here



Click Next

enter image description here



Jetzt klicken Finish

enter image description here



Nun importiert der Assistent die Daten Excel-Sql Server und klicken Close.

enter image description here



Hier ist der Tisch

enter image description here

+0

Sehen Sie, wo das OP sagt "... sollte automatisiert werden ...." – kfm2000