Poproszenie dostawcy o poprawienie pliku danych może nie być opcją, ale ostatecznie znalazłem rozwiązanie, które wymaga nieznacznej aktualizacji pliku kontrolnego, aby określić znak „ujęty przez” dla każdego pola zamiast dla wszystkich pól.
W moim przypadku wystąpił problem polegający na tym, że jeśli pole [first_name] pojawi się z podwójnymi cudzysłowami otaczającymi pseudonim, nie zostanie załadowane. (np. Jonathon „Jon”). W pliku danych nazwa była pokazana jako „Jonathon „Jon”” . Tak więc „zamknięty przez” generował błąd, ponieważ wokół wartości znajdowały się podwójne cudzysłowy i podwójne cudzysłowy wokół części wartości („Jon”). Więc zamiast określać, że wartość powinna być ujęta w podwójne cudzysłowy, pominąłem to i po prostu ręcznie usunąłem cudzysłowy z ciągu.
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 '"'
)