Su archivo de datos tiene caracteres adicionales e invisibles. No podemos ver el original, pero presumiblemente se creó en Windows y tiene CRLF separadores de nueva línea; y está ejecutando SQL*Loader en un entorno UNIX/Linux que solo espera salto de línea (LF). Los caracteres de retorno de carro (CR) todavía están en el archivo y Oracle los ve como parte del campo ZIP en el archivo.
La última línea no tiene un CRLF (ni ningún marcador de nueva línea), por lo que en esa línea, y solo esa línea:el campo ZIP se ve como 5 caracteres, para todos los demás se ve como seis, p. 98001^M
.
Puede leer más sobre el comportamiento predeterminado en la documentación :
Si abre el archivo de datos en una edición como vi o vim, verá esos ^M
adicionales personajes de control.
Hay varias formas de arreglar esto. Puede modificar el archivo; lo más sencillo es copiar y pegar los datos en un nuevo archivo creado en el entorno en el que ejecutará SQL*Loader. Hay utilidades para convertir finales de línea si lo prefiere, p. dos2unix
. O su editor de Windows puede guardar el archivo sin los CR. También podría agregar un delimitador de campo adicional al archivo de datos, como sugirió Ditto.
O podría decirle a SQL*Loader que espere CRLF cambiando el INFILE
línea:
LOAD DATA
INFILE Customer.dat "str '\r\n'"
INTO TABLE Customer
...
... aunque eso causará problemas si proporciona un archivo creado en Linux, sin los caracteres CR.