2016-08-18 5 views
0

Ich versuche, ein SSIS-Paket durch den Datenimport in SQL Server zu erstellen 2012.Import große, flache Datei mit sehr langen String als SSIS-Paket

Die Daten sieht wie folgt aus (dies ist nur 1 Zeile der Daten , entfernt vertrauliche Daten):

35 XXXX.XXXXXXXXXXXXXXXX 2. XXXX. 6. XXXX. 1. 10.NNN 80000000.XXXXXXXXd 1001. 1001. 6.NNNNNNNNNNNNNNNN 0. 0. 17.XXXXXXXX-XXXXXXXXXXX-XXINCMGFO XXXX. 0. 0.00000000000000NN XXXXXXXXXXXXXXXXXXXXXXXXXXXEVITE, INC. XXXXXXXX CA US 5734. 0.0TMP 88 12.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 12.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX -.270000 .00

Jede Zeile dieser flachen Datei und einige können nicht die gleichen Muster teilen Haben Sie ein einzelnes Zitat oder ein Doppelzitat in den Daten. Diese einfachen/doppelten Anführungszeichen sind möglicherweise nicht vollständig, sie sind in den Daten enthalten, da die Daten nicht vollständig bereinigt wurden.

Jede Flat-Datei wird am Ende jedes Monats generiert. Was ich vorhabe ist, ein SSIS-Paket zu erstellen und dann einen Job zu erstellen, um dieses SSIS-Paket aufzurufen, um alle monatlichen Rohdaten automatisch in einer Staging-Tabelle zu speichern. Später werde ich eine gespeicherte Prozedur schreiben, um die Daten in dieser Staging-Tabelle zu bereinigen und die bereinigten Daten in eine andere Tabelle zu verschieben.

Aber meine Frage hier ist über das Erstellen dieses SSIS-Pakets.

Es hielt mir eine Fehlermeldung wie folgt geben: Deshalb error imag

habe ich versucht, die Eigenschaften zu ändern:

ändern String bis 5000 Länge, ich habe auch versucht, 8000, auch nicht

funktionierte

set string length as 5000

Wechsel zu Text-Stream, da ich t Hought kann dies längere Zeichenfolge zulassen ..

set as text stream

Sie gaben mir immer noch den gleichen Fehler.

So habe ich eine Lösung here ich vielleicht erraten gefunden es ist, weil meine Daten in einigen Zeilen unvollständig doppelte Anführungszeichen oder Apostroph hat, aber ich kann nicht parametrisierte Abfragen als die Lösung der Fall ist, weil alles in einer Reihe von der flachen Datei wird in 1 Spalte gespeichert werden.

Gibt es also eine Möglichkeit, dieses Problem als SSIS-Paket zu erstellen?

+0

Wie erstellen Sie das Paket? Import Export-Assistent? Erstellen Sie die Staging-Tabelle nicht, während Sie das _package_ erstellen, erstellen Sie es zuvor. Erstellen Sie eine Staging-Tabelle mit * one * 'varchar (8000)' Spalte. Verwenden Sie anschließend SSDT, um ein Paket zum Laden Ihrer Datei in diese Staging-Tabelle zu erstellen. Es scheint, dass Sie ein Problem beim Erstellen der Staging-Tabelle beim Definieren des Pakets haben. Tu es nicht so. Wie auch immer es hilft, wenn Sie genau erklären, wie Sie zu dieser Fehlermeldung –

+0

gut gehen, wenn es wirklich kein Muster wie Anzahl der Spalten oder konsequent abgegrenzten oder qualifizierten Text dann diese Methode nicht funktioniert, müssen Sie die Datei vor dem Importieren zu reinigen. Können Sie beeinflussen, wie Sie den Export erhalten? Wenn das der Fall ist, würde ich Pipe delimited | vorschlagen Denn dann, wenn Textqualifikationskandidaten sind oder du versaust, kannst du trotzdem den Inhalt einbringen und dann aufräumen. Es wird nicht mit Kommas in der Adresse usw. verwechselt werden. Es gibt ein paar mehr Techniken, aber mehr Informationen wie Beispieldateiformate würden benötigt. Ich vermute, dass Ihr MAX-Length-Problem durch Begrenzer/Zeilenbegrenzer verursacht wird. – Matt

+0

Es kann auch sein, dass 'Spaltennamen' beim Importieren der Datei angekreuzt sind und die erste Zeile als Spaltenbezeichner betrachtet wird Information. –

Antwort

1

Das Problem wurde gelöst. Es ist immer noch wert, hier zu teilen, da einige Details beachtet werden müssen, sonst wird es Fehler geben.

Wir können das Problem weiterhin durch den SQL Server-Importassistenten lösen. In meinem Fall haben die flachen Dateien keine Header. Jede Datei ist eine flache Datei und sie haben keine Erweiterung .txt.

Detail 1 Wenn Sie eine Datei aus dem Quellordner auswählen, müssen Sie das Dateiformat als .txt festlegen, wenn alle Dateien angezeigt werden. und müssen alle Dateien auswählen, wenn .txt angezeigt wird. Andernfalls können später möglicherweise keine Daten aus der Vorschau angezeigt werden und es kann nicht fortgefahren werden.

image1

Detail 2 In meinem Fall ist jede Zeile der Aufzeichnung sehr lang, und jede Zeile unterschiedliche dimilters verwenden. Es ist besser zu verwenden Feste Breite Format, sonst können Sie den Fehler, den ich oben zeigte. Im Dateinamen musste ich ".txt" entfernen, da meine echten Dateinamen keine .txt haben, aber hier sollten sie als .txt behandelt werden. Deaktivieren Sie "Spaltennamen in der ersten Datenzeile", da ich keinen Dateiheader habe.

image1

Detail 3 nach fester Breite Format auswählen, müssen wir die rote Linie bis zum Ende jeder Reihe ziehen. Sie sollten diese schwarzen Quadrate sehen, was bedeutet das Ende einer Reihe

image3

Detail 4 Inzwischen konnten wir auf dem Lineal klicken und jede Zeile in Spalten trennen.

image4

Nach all diesen Einstellungen, könnten wir nächste einfach weiter klicken und in meinem Fall konnte ich SSIS-Paket erfolgreich jetzt generieren.

+1

Vielen Dank für die Rücksendung und eine detaillierte Lösung für Ihr Problem - das hilft anderen Leuten, die nach diesem Problem suchen. Ja, der Assistent wird diese Daten für Sie importieren - ich dachte, es wäre ein anderes Problem. –

Verwandte Themen