sql >> Database >  >> RDS >> Oracle

Sqlldr- Geen terminator gevonden na beëindigd en ingesloten veld

Uw provider vragen om het gegevensbestand te corrigeren is misschien geen optie, maar ik heb uiteindelijk een oplossing gevonden waarbij u uw controlebestand enigszins moet bijwerken om uw "ingesloten door"-teken voor elk veld te specificeren in plaats van voor alle velden.

Voor mijn geval had ik een probleem waarbij als het veld [first_name] binnenkwam met dubbele aanhalingstekens om een ​​bijnaam, het niet zou laden. (Bv:Jonathon "Jon"). In het gegevensbestand werd de naam weergegeven als "Jonathon "Jon"". Dus de "omsloten door" gaf een fout omdat er dubbele aanhalingstekens rond de waarde stonden en dubbele aanhalingstekens rond een deel van de waarde ("Jon"). Dus in plaats van op te geven dat de waarde tussen dubbele aanhalingstekens moet staan, heb ik dat weggelaten en heb ik de aanhalingstekens gewoon handmatig uit de tekenreeks verwijderd.

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 '"'
)


  1. mysqli::query():Kan mysqli niet ophalen

  2. Waarom krijg ik PLS-00302:component moet worden aangegeven als het bestaat?

  3. Best practices voor het ontwerpen van meertalige databases

  4. Onjuiste datetime-waarde Databasefoutnummer:1292