sql >> Databáze >  >> RDS >> Oracle

Sqlldr- Po ukončeném a uzavřeném poli nebyl nalezen žádný terminátor

Požádat vašeho poskytovatele o opravu datového souboru možná nepřipadá v úvahu, ale nakonec jsem našel řešení, které vyžaduje, abyste svůj kontrolní soubor mírně aktualizovali tak, aby pro každé pole namísto pro všechna pole specifikoval znak „uzavřený“.

V mém případě jsem měl problém, že pokud by pole [first_name] vstoupilo do dvojitých uvozovek zabalujících přezdívku, nenačetlo by se. (např. Jonathon "Jon"). V datovém souboru bylo jméno zobrazeno jako "Jonathon "Jon"" . Takže "uzavřený" vyvolal chybu, protože kolem hodnoty byly dvojité uvozovky a kolem části hodnoty ("Jon"). Takže místo určení, že hodnota by měla být uzavřena dvojitými uvozovkami, jsem to vynechal a pouze ručně odstranil uvozovky z řetězce.

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. Ruby on Rails:Existuje nějaký způsob, jak stáhnout položky z databáze a nechat je vrátit ve stanoveném pořadí?

  2. Mysql vytvořit databázi s novým umístěním databáze

  3. vyberte dva nejnovější řádky pro každého uživatele, abyste získali rozdíl ve sloupci (MySQL)

  4. Jak kombinovat GROUP BY, ORDER BY a HAVING