2009-04-02 10 views
6

Ich habe eine CSV-Datei mit Zitat Textbegrenzer. Die meisten der 90000 Zeilen sind in Ordnung, aber ich habe ein paar Zeilen, die ein Textfeld haben, das sowohl ein Zitat als auch ein Komma enthält. Zum Beispiel würde die Felder Wert sein:SQL 2005 CSV-Import-Angebot mit inneren Zitaten und Kommas getrennt

AB "AB

Wenn Begrenzt wird dies

"AB"," AB“

Wenn SQL 2005 versucht, dies zu importieren, bekomme ich Fehler wie ...

Messages 
Error 0xc0202055: Data Flow Task: The column delimiter for column "Column 4" was not found. 
(SQL Server Import and Export Wizard)

Dies scheint nur zu passieren, wenn ein Zitat und Komma in einem Text zusammen sind. Werte wie

AB "AB, das wird "AB"" AB“ oder AB, AB, die "AB, AB"

funktionieren.

Hier sind einige Beispiele Reihen wird ...

 
"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224"",E122/261,8 CO","","B","MP11" 

die letzte Zeile ist ein Beispiel für das Problem - der „“, den Fehler verursacht

Antwort

0

ich würde ein suchen/ersetzen für nur nicht.“, und es ersetzen mit,

Haben Sie Zugriff auf die Originaldatei?

+0

Nein Ich habe nur Zugriff auf die Importdatei. Auch die Datei ist voll von ", oder" ", die gültig sind. Hier sind einige Beispielzeilen ... " 1465564 "," KETTENRAD: 13TEETH, 74MM OD, 66MM "," ID W/.25 "" SETSCR "," B "," MP6 " " S01266330002 "," KABEL: 224 "", E122/261,8 CO "," "," B "," MP11 " 2. Zeile ist –

1

Wie wäre es einfach:

  1. Suchen/Ersetzen alle "", mit ''; (fixiere alle defekten Felder)
  2. Suche/Ersetze alle; ''; mit, "", (um "richtig" leere Felder zu "leeren".)
  3. Suche/Ersetze alle ''; ''; mit „“, „“, (auf „losmachen“ richtig leere Felder, die eine korrekte Verkapselung von eingebetteten Trennzeichen folgen.)

dass Ihre ursprünglichen konvertiert zu:

"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224'';E122/261,8 CO","","B","MP11" 

, die den Fehdehandschuh zu laufen scheinen gut in SSIS. Möglicherweise müssen Sie Schritt 3 rekursiv ausführen, um 3 leere Felder in einer Zeile (''; ''; ''; usw.) zu berücksichtigen. Die unterste Zeile hier ist jedoch, dass Sie eingebettete Textqualifizierer entweder entschlüsseln müssen oder ersetze sie. Lassen Sie dies eine Lektion für Ihre zukünftigen CSV-Erstellungsprozesse sein.

+0

In einem anderen Kommentar, Das OP sagt, dass er nur auf die Importdatei zugreifen kann, nicht auf die CSV-Erstellung.Außerdem ändert Ihre Antwort die Daten (doppelte Anführungszeichen in einfache Anführungszeichen), so dass das Problem des Importierens dieser Daten nicht wirklich gelöst wird. – goodeye

4

Ich hatte MAJOR Probleme mit SSIS. Dinge, die Access, Excel und sogar DTS sehr gut zu machen schienen, erstickt an SSIS. Variable Datensatzlängen sind ein anderes Problem, aber diese eingebetteten Qualifizierer sind ein großes Problem. Vor allem, wenn Sie keinen Zugriff auf die Importdateien haben, da sie sich auf dem Server eines anderen Benutzers befinden, für den Sie Zugriff erhalten und der möglicherweise sogar 4 bis 5 GB groß ist! Kann nur einen "Ersetze alle" bei jedem Import.

Sie können dies in Microsoft-Downloads namens "UnDouble" überprüfen und hier ist ein weiterer workaround Sie versuchen könnten.

Scheint wie mit SSIS in SQL Server 2008, der Fehler ist immer noch da. Ich weiß nicht, warum sie das nicht im Parser angesprochen haben, aber es ist so, als wären wir mit SSIS in grundlegenden Importfunktionen zurückgegangen.

UPDATE 11-18-2010: Dieser Fehler existiert noch in SSIS. Tolle.

1

Microsoft says doppelte Anführungszeichen in doppelten Anführungszeichen abgegrenzte Felder funktionieren einfach nicht. Ein Update ist für Ende 2011 geplant ...

In der Zwischenzeit müssen wir Workarounds wie in den anderen Antworten beschrieben verwenden.

+0

Immer noch nicht behoben ... – NotMe