Frage

Hat jemand in der Lage eine variable Satzlänge Textdatei (CSV) in SQL Server über SSIS zu bekommen?

Ich habe immer wieder versucht, eine CSV zu bekommen in eine SQL Server-Tabelle-Datei, mit SSIS, wo die Eingabedatei Satzlängen hat variiert. Bei dieser Frage sind die beiden unterschiedlichen Satzlängen 63 und 326 Byte. Alle Satzlängen werden in die gleiche 326-Byte Breite Tabelle importiert werden.

Es gibt mehr als eine Million Datensätze zu importieren.
Ich habe keine Kontrolle über die Erstellung der Importdatei.
Ich muss SSIS verwenden.
Ich habe mit MS bestätigt, dass dies als Fehler gemeldet. Ich habe mehrere Abhilfen versucht. Die meisten haben, wo ich versuche, benutzerdefinierten Code zu schreiben, um den Datensatz abfangen und ich kann daran arbeiten, wie ich will zu bekommen scheinen.

War es hilfreich?

Lösung

Ich hatte ein ähnliches Problem, und verwendet, um benutzerdefinierte Code (Script Task) und eine Skriptkomponente unter der Registerkarte Datenfluss.

Ich habe eine Flat File Quelle in eine Skriptkomponente Fütterung. Im Innern befindet verwende ich Code, um die incomming Daten zu manipulieren und beheben für das Ziel nach oben.

Mein Problem war der Anbieter, da kein Datum ‚000000‘ wurde mit zur Verfügung, und eine andere coloumn hatte eine Polsterung / trim Ausgabe.

Andere Tipps

Sie sollten kein Problem haben, diese Datei zu importieren. Nur sicher machen, wenn Sie die Flat-File-Verbindungsmanager zu erstellen, wählen Sie Trennzeichen Format, dann setzen SSIS Spaltenlänge auf maximale Dateispaltenlänge, so dass es keine Daten empfangen kann.

Es scheint, wie Sie Festes Breite-Format verwenden, die für CSV-Dateien nicht korrekt ist (da Sie Spalte mit variabler Länge haben), oder vielleicht haben Sie falsch die Spaltenbegrenzer gesetzt.

Die gleiche Problem. In meinem Fall hat das Ziel CSV-Datei-Header und Footer Datensätze mit Formaten völlig anders als der Körper der Datei; die Kopf- / Fußzeilen werden verwendet, um zu validieren Vollständigkeit der Dateiverarbeitung (Datum / Zeit, Rekordzahlen, Menge Summen - von einem anderen Namen „Prüfsumme“ ...). Dies ist ein gängiges Format für Dateien von „Mainframe“ Umgebungen, und obwohl ich darauf noch nicht begonnen haben, erwarte ich, Scripting zu haben zu verwenden, um die Kopf- / Fußzeilen, speichern den Rest als neue Datei abzustreifen, verarbeiten die neue Datei, und führen Sie dann die Validierung. Kann nicht genau das hat MS erwarten, dass out-of-the-Box (aber es wäre sicher schön sein, wäre es nicht?).

Sie können eine Skript Aufgabe # mit C schreiben, durch jede Zeile und Pad es mit der richtigen Menge an Kommata zu polstern die Daten iterieren. Dies setzt natürlich voraus, dass alle Daten mit den richtigen Spalten ausgerichtet ist.

d. wie Sie jeden Datensatz zu lesen, können Sie die Anzahl der Kommas „count“. Dann einfach anhängen X Anzahl der Kommas an das Ende des Datensatzes, bis er die richtige Anzahl von Komma hat.

Excel hat ein Problem, das diese Art von Datei verursacht erstellt werden, wenn in CSV konvertieren.

Wenn Sie dies tun „von Hand“ der beste Weg, dies zu lösen, ist die Datei in Excel zu öffnen, eine Spalte am „Ende“ des Datensatz erstellen, und füllen Sie sich die ganzen Weg nach unten mit 1s oder einem anderen Charakter.

Nasty, kann aber eine schnelle Lösung sein.

Wenn Sie nicht die Möglichkeit haben, dies zu tun, können Sie das gleiche tun programmatisch wie oben beschrieben.

Warum können Sie nicht importieren sie nur als Test-Datei und legen Sie die Spalte delimeter auf „“ und die Zeile delimeter zu CRLF?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top