Wie importiere ich MS Access-Daten mit dem SSIS-Paket in SQL Server?

8

Ich habe den größten Teil des Tages damit verbracht, mich nach etwas umzusehen, das mir helfen kann, aber SSIS ist so ein riesiges Werkzeug, dass bisher nichts nützt, oder vielleicht verstehe ich es einfach nicht.

Ich muss eine alte Access db nehmen, die einige Probleme hat und sie in SQL Server verschieben. Ich habe bereits das Schema in meiner SQL-Datenbank eingerichtet. Die alten Daten müssen korrigiert werden, Dinge wie Normalisierung und Entfernen von Duplikaten. Mein Chef besteht darauf, SSIS für diesen Job zu verwenden, weil wir hier jemanden brauchen, der weiß, wie man es benutzt, und derzeit fast niemand (ein Manager hat es schon lange benutzt).

Also, ich habe ein Projekt in BDIS, oder Visual Studio, oder was auch immer diese App ist. Ich habe einen Verbindungsmanager zu meiner Access-Datenbank erstellt, und ich habe es geschafft, eine OLE DB-Quelle auf den Designer zu ziehen und einzurichten, um eine Verbindung zu dieser Datenbank herzustellen. Ich habe auch herausgefunden, dass ich Daten von dort auswählen kann.

Was nun? Ich würde es wirklich vorziehen, ein riesiges SQL-Skript zu schreiben, um alle Daten, die ich brauche, aus der Access db zu holen, sie so umzuwandeln, wie ich will, und sie in die SQL-Server-Datenbank zu schieben. Aber es sieht so aus, als müsste ich all diese funkigen Transformationswerkzeuge im Designer verwenden. Ich kann auch nicht herausfinden, wie ich die resultierenden Daten in SQL-Server bekommen werde. Ich habe die Verbindung im Bereich Server-Explorer eingerichtet, aber alle Online-Benutzer verwenden das SQL Server-Ziel nie. Also bin ich auch dort verloren.

Mein Chef sagte, die Online-Hilfedateien wären sehr nützlich. Bisher war es so, als würde man eine Nadel in einem Heuhaufen finden, der unter einem Sumpf liegt und auf dem drei Burgen stehen. Es gibt einfach zu viele Informationen und nichts scheint mir nützlich zu sein.

Bearbeiten

Hoffentlich werden weitere Informationen nützlich sein. Ich denke, die Zauberer, die mit SSIS kommen, sind nicht stark genug für das, was ich will, also müssen sie es bitte erklären. Hier ist ein Beispiel von dem, was ich tun muss, außer dass meine Realität viel mehr Tabellen mit mehr Transformationen ist.

Angenommen, ich habe eine Quellentabelle, die wie folgt aussieht:

%Vor%

Ich muss das in zwei Tabellen normalisieren. Und es muss natürlich die IDs verfolgen, so dass die Widgets mit der richtigen Firma verknüpft sind. Wenn Sie mit einem Beispiel dafür helfen könnten, wie dieser Fall mit SSIS von Access auf SQL Server gehandhabt würde, dann könnte ich es wahrscheinlich von dort nehmen. Danke!

    
Tesserex 15.07.2011, 15:44
quelle

2 Antworten

31

Das folgende Beispiel gibt Ihnen möglicherweise eine Idee, eine Datenmigration von MS Access zu SQL Server durchzuführen. Das Beispiel verwendet MS Access 2010 und SQL Server 2008 R2 database. Das Paket wurde in SSIS 2008 R2 geschrieben. Im Gegensatz zur zuvor bereitgestellten Lösung verwendet diese Antwort nicht den SQL Server-Import- und Export-Assistenten und das Paket wurde von Grund auf neu erstellt.

Schritt-für-Schritt-Prozess:

  1. Nehmen wir an, dass die Access-Tabelle wie in Screenshot # 1 mit einer Tabelle namens Companies dargestellt ist, die zwei Zeilen in einer de-normalisierten Art enthält.

  2. Auch vorausgesetzt, dass die Tabellenstruktur in SQL Server wie in den Screenshots # 2 und # 3 mit zwei Tabellen mit den Namen dbo.CompanyInfo und% co_de dargestellt wird %. Erstellen Sie Tabellenskripts im Abschnitt SQL-Skripts. Die Tabellen sind leer, wie in Screenshot # 4 gezeigt.

  3. Erstellen Sie ein neues SSIS-Paket. Klicken Sie im SSIS-Paket mit der rechten Maustaste auf den Verbindungs-Manager, und wählen Sie Neue OLE-DB-Verbindung, wie im Screenshot # 5 gezeigt. Klicken Sie im OLE DB-Verbindungsmanager konfigurieren auf die Schaltfläche Neu ..., wie in Screenshot # 6 gezeigt.

  4. Wählen Sie im Verbindungs-Manager dbo.WidgetInfo und geben Sie den Pfad für die Zugriffsdatei an. In diesem Beispiel habe ich die Datei in Native OLE DB/Microsoft Jet 4.0 OLE DB Provider . OK klicken. Siehe Screenshot # 7 . Klicken Sie im Configure OLE DB Connection Manager auf OK, wie in Screenshot # 8 gezeigt. Ändern Sie den Namen des Verbindungs-Managers in AccessDB (der Name könnte von Ihrer Präferenz abweichen). Siehe Screenshot # 9 .

  5. Klicken Sie erneut mit der rechten Maustaste auf den Verbindungsmanager und wählen Sie Neue OLE DB-Verbindung, wie im Screenshot # 10 gezeigt. Dieses Mal werden wir eine Verbindungszeichenfolge für SQL Server erstellen. Wählen Sie Native OLE DB \ SQL Server Native Client 10.0 und geben Sie den Servernamen und den Datenbanknamen wie in Screenshot # 11 angegeben an. Benennen Sie den Verbindungsmanager zu SQLServer um (wieder ist Name Ihre Wahl). Siehe Screenshot # 12 .

  6. Platzieren Sie auf der Registerkarte "Kontrollfluss" des SSIS-Pakets eine Datenflusstask und benennen Sie sie als C:\temp\Source.mdb . Doppelklicken Sie auf den Datenfluss-Task, um zur Registerkarte Datenfluss zu wechseln. Platzieren Sie in der Datenflusstask einen Populate CompanyInfo , einen OLE DB Source und einen Derived Transformation , wie in Screenshot # 13 gezeigt. OLE DB Destination Sie müssen die Aufgaben nacheinander in der angegebenen Reihenfolge konfigurieren. Platzieren Sie nicht alle Aufgaben gleichzeitig und versuchen Sie, sie zu verbinden.

  7. Konfigurieren Sie die OLE DB-Quelle zum Lesen der Access-Datenbanktabelle wie in den Screenshots # 14 und # 15 gezeigt. Konfigurieren Sie die Derived-Umwandlung, um den Zeichenfolgtext von Access-Datenbank in Unicode zu konvertieren, wie in Screenshot # 16 gezeigt. Konfigurieren Sie das OLE DB-Ziel, um die Daten in die SQL-Tabelle einzufügen, wie in den Screenshots # 17 und # 18 gezeigt.

  8. Kehren Sie zur Registerkarte "Kontrollfluss" zurück und platzieren Sie einen anderen Datenfluss-Task wie in Screenshot # 19 gezeigt.

  9. In der zweiten Datenflusstask lesen wir dieselbe Companies-Tabelle in der Access-Datenbank und versuchen, die WidgetInfo-Tabelle in SQL aufzufüllen.

  10. Platzieren Sie NOTE: , um die Access-Tabelle zu lesen und konfigurieren Sie sie wie in den Screenshots # 20 und # 21 beschrieben. Platzieren Sie ein OLE DB Source , um die Zeichenfolge in Unicode zu konvertieren, wie in Screenshot # 22 gezeigt. Platzieren Sie ein Derived transformation , um die CompanyId basierend auf dem Namen und der Adresse abzurufen, und konfigurieren Sie die Aufgabe wie in den Screenshots # 23 und # 24 gezeigt. Die Standardsuchaufgabe schlägt fehl, wenn keine Übereinstimmung gefunden werden kann. Wir müssen die Widget-Daten normalisieren. Platziere also Lookup transformation und konfiguriere es wie in Screenshot # 25 gezeigt. Platzieren Sie ein Unpivot transformation , um die Daten in SQL einzufügen und konfigurieren Sie es wie in den Screenshots # 26 und # 27 gezeigt. Die zweite Datenflussaufgabe würde wie im Screenshot # 28

  11. aussehen
  12. Screenshots # 29 - # 31 zeigen die Ausführung eines Beispielpakets.

  13. Screenshot # 32 zeigt Daten in den SQL-Tabellen nach der Paketausführung an.

Ich hoffe, dass dies eine Idee des Exportierens von Daten von Access-Datenbank zu SQL Server geben sollte. Sie können die Tabellen in Access gruppieren und sie in einer einzelnen Datenflusstask laden. Wenn es Tabellen gibt, die von anderen Tabellen abhängen, können Sie die separate Datenflussaufgabe wie in diesem Beispiel gezeigt platzieren.

Ich hoffe, das hilft.

SQL-Skripts:

%Vor%

Screenshot 1:

Screenshot 2:

Screenshot 3:

Screenshot 4:

Screenshot 5:

Screenshot 6:

Screenshot 7:

Screenshot 8:

Screenshot 9:

Screenshot 10:

Screenshot 11:

Screenshot 12:

Screenshot 13:

Screenshot 14:

Screenshot 15:

Screenshot 16:

Screenshot 17:

Screenshot 18:

Screenshot 19:

Screenshot 20:

Screenshot 21:

Screenshot 22:

Screenshot 23:

Screenshot 24:

Screenshot 25:

Screenshot 26:

Screenshot 27:

Screenshot 28:

Screenshot 29:

Screenshot # 30:

Screenshot 31:

Screenshot # 32:

    
user756519 15.07.2011, 17:17
quelle
1

Dies könnte helfen:

  1. Sie benötigen Verbindung2 zu Ihrer Quell- und Desinationsdatenbank. Es klingt, als hättest du schon deine Quelle.

  2. Sie benötigen einen Datenflusstask auf der Registerkarte "Kontrollfluss". Ziehen Sie eines davon an und doppelklicken Sie darauf - Sie werden zum Tab "Datenfluss" weitergeleitet.

  3. Fügen Sie hier eine 'Datenquelle' hinzu (was sich so anhört) und fügen Sie auch ein 'OLE DB-Ziel' hinzu.

  4. Doppelklicken Sie auf Ihre Quelle. Sie sollten in der Lage sein, die Verbindung zu spezifizieren (wieder sieht es so aus als ob Sie das getan haben),

  5. 'Datenzugriffsmodus' gibt an, wie Sie die Daten abrufen möchten. I.e. direkt aus einer Tabelle oder schreibe eine Abfrage, die die Daten zurückgibt

  6. Wenn es sich um eine direkte Eins-zu-eins-Zuordnung zum Ziel handelt, sollten Sie in der Lage sein, die beiden mit einer grünen Linie zu verbinden (eine Präzidenzwirkung).

Wenn Sie Transformationen durchführen wollen, können Sie dies in der Abfrage auf der Quelle tun oder eines der Transformationsobjekte zwischen Quelle und Ziel setzen und sie entsprechend verbinden.

    
James Wiseman 15.07.2011 15:55
quelle

Tags und Links