Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Sqlldr – Kein Abschlusszeichen nach abgeschlossenem und eingeschlossenem Feld gefunden

Ihren Provider zu bitten, die Datendatei zu korrigieren, ist vielleicht keine Option, aber ich habe letztendlich eine Lösung gefunden, die erfordert, dass Sie Ihre Steuerdatei leicht aktualisieren, um Ihr "eingeschlossen von"-Zeichen für jedes Feld anstatt für alle Felder anzugeben.

In meinem Fall hatte ich ein Problem, bei dem das Feld [first_name] mit doppelten Anführungszeichen, die einen Spitznamen umschließen, nicht geladen würde. (ZB:Jonathon „Jon“). In der Datendatei wurde der Name als „Jonathon „Jon““ angezeigt. Das "eingeschlossen von" hat also einen Fehler ausgelöst, weil doppelte Anführungszeichen um den Wert und doppelte Anführungszeichen um einen Teil des Werts ("Jon") standen. Anstatt also anzugeben, dass der Wert in doppelte Anführungszeichen eingeschlossen werden soll, habe ich das weggelassen und die Anführungszeichen einfach manuell aus der Zeichenfolge entfernt.

Load Data
APPEND
INTO TABLE MyDataTable
fields terminated by ","     ---- Noticed i omitted the "enclosed by"
TRAILING NULLCOLS
(
  column1 enclosed by '"',   --- Specified "enclosed by" here for all cols
  column2 enclosed by '"',
  FIRST_NAME "replace(substr(:FIRST_NAME,2, length(:FIRST_NAME)-2), chr(34) || chr(34), chr(34))", -- Omitted "enclosed by".  substr removes doublequotes, replace fixes double quotes showing up twice.  chr(34) is charcode for doublequote
  column4 enclosed by '"',
  column5 enclosed by '"'
)