sql >> Database teknologi >  >> RDS >> Oracle

Sqlldr- Ingen terminator fundet efter afsluttet og lukket felt

At bede din udbyder om at rette datafilen er muligvis ikke en mulighed, men jeg fandt i sidste ende en løsning, der kræver, at du opdaterer din kontrolfil lidt for at angive dit "omsluttet af"-tegn for hvert felt i stedet for for alle felter.

For mit tilfælde havde jeg et problem, hvor hvis [first_name] feltet kom ind med dobbelte anførselstegn, der ombrøt et kaldenavn, ville det ikke indlæses. (F.eks.:Jonathan "Jon"). I datafilen blev navnet vist som "Jonathon "Jon"" . Så "omsluttet af" gav en fejl, fordi der var dobbelte anførselstegn omkring værdien og dobbelte anførselstegn omkring en del af værdien ("Jon"). Så i stedet for at specificere, at værdien skulle være omgivet af dobbelte anførselstegn, udelod jeg det og fjernede bare anførselstegnene manuelt fra strengen.

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. ændre tabel og derefter opdatere i enkelt sætning

  2. Hvordan definerer man en unik begrænsning på en kolonne af MySQL-tabellen i Ruby on Rails 3?

  3. Slip en kolonne med en fremmednøgle

  4. Hvordan kan jeg se/ændre indstillingerne for timeout for MySQL-forbindelsen?