Gibt es eine Möglichkeit, einem doppelten Anführungszeichen in einer textqualifizierten Zeichenfolge bei einem SSIS-Csv-Import zu entkommen?

8

Ich habe eine CSV-Datei, die ich mithilfe von SSIS-Paketen über Code in SQL importieren möchte. Eine Zeile könnte so aussehen:

%Vor%

In diesem Beispiel verwenden sie ein Doppelzitat, um Zoll zu symbolisieren. Sie versuchen, dem Doppelzitat mit einem doppelten Zitat zu entkommen. SSIS jedoch respektiert diesen Eskapismus nicht und schlägt fehl.

Kann ich das Doppelzitatsymbol trotzdem für Zoll verwenden und es im zitierten Text ausblenden?

Viele Vorschläge ersetzen das doppelte Zitat durch zwei einfache Anführungszeichen. Ist das die einzige Arbeit oder kann ich eine andere Escape-Technik verwenden?

Ich habe gesehen, dass Leute über die Verwendung der Transformation für abgeleitete Spalten sprechen, aber in meinem Fall schlägt SSIS im Schritt "Flache Dateiquelle" fehl und ich kann daher nicht zu einem abgeleiteten Spaltentransformationsschritt gelangen.

Ich führe gerade eine Skript-Aufgabe im Kontrollfluss, kurz vor dem Datenfluss, um den Csv mit einigen Regex zu manipulieren, um die Daten zu bereinigen.

Ich brauche die Zeichenfolge, die wegen der möglichen Kommata in der Beschreibungsspalte mit den zwei äußeren Anführungszeichen textqualifiziert ist.

Was kann ich mit den Anführungszeichen in der textqualifizierten Zeichenfolge tun?

    
topwik 07.07.2011, 21:17
quelle

4 Antworten

4

Wow, ich habe erwartet, dass ich mit "Just set the text qualifier" antworten konnte, aber ich dachte mir, dass du das schon versucht hättest, also habe ich es versucht, bevor ich geantwortet habe. Überraschung, SSIS unterstützt keine Standard-CSV-Dateien!

Sieht so aus, als wäre dies ein gemeinsame Beschwerde . Es gibt einen Kommentar von Microsoft über einige Beispiele, die helfen könnten; Hier ist das Codeplex-Projekt , das erwähnt hat, dass das Beispiel für die Flat-Source-Datei für reguläre Ausdrücke und das Source-Beispiel für Delimited File Reader hilfreich sein könnte - Ich schätze, der Delimited File Reader wäre lohnender.

    
Chris Shaffer 08.07.2011, 12:03
quelle
1

Diese Antwort ist nicht auf das Jahr 2005 anwendbar, auf das hier verwiesen wird, aber falls jemand während der Suche auf diese Seite stößt und 2008 verwendet, scheint diese andere Frage eine funktionierende Antwort zu haben: SSIS 2008 und Undouble

    
Tao 04.11.2011 14:11
quelle
1

Ich bin gestern auf ein ähnliches Problem gestoßen. Wir haben die CSV-Datei, die Komma (,) als Trennzeichen und doppelte Anführungszeichen (") als Textqualifikationsmerkmal verwendet, aber es gibt ein Feld, das doppelte Anführungszeichen in doppelten Anführungszeichen enthält , kam die Lösung unten,

var fileContent = File.ReadAllLines(fullFilePath); //load the file into a one dimensional string array. fullFilePath is the full path + the file name. var fileContentUpdated = fileContent.Select(x => new Regex(@"(?<!^)(?<!\,)""(?!\,)(?!$)").Replace(x, "'")).ToArray(); //this line here finds the double quote within the double quote and replace it with single quote File.WriteAllLines(fullFilePath, fileContentUpdated); //write the string array into the csv file.

Ich sehe keinen anderen Weg, als das doppelte Zitat durch etwas anderes zu ersetzen, um das Problem zu vermeiden.

    
user1968485 17.12.2015 06:27
quelle
-1

Wahrscheinlich alte Nachrichten, aber dieses Problem wurde in SQL Server 2012 behoben. Ich konnte die gleiche Datei auf einem Server 2012 importieren, der auf meinem Server 2008 fehlgeschlagen ist.

    
Richard Thomas 21.10.2014 13:05
quelle