File data Anda memiliki karakter ekstra yang tidak terlihat. Kami tidak dapat melihat aslinya tetapi mungkin itu dibuat di Windows dan memiliki CRLF pemisah baris baru; dan Anda menjalankan SQL*Loader di lingkungan UNIX/Linux yang hanya mengharapkan umpan baris (LF). Karakter carriage return (CR) masih ada dalam file, dan Oracle melihatnya sebagai bagian dari bidang ZIP dalam file.
Baris terakhir tidak memiliki CRLF (atau penanda baris baru), jadi pada baris itu - dan hanya baris itu - bidang ZIP dilihat sebagai 5 karakter, Untuk yang lainnya dilihat sebagai enam, mis. 98001^M
.
Anda dapat membaca lebih lanjut tentang perilaku default di dokumentasi :
Jika Anda membuka file data dalam pengeditan seperti vi atau vim, Anda akan melihat ^M
tambahan tersebut karakter kontrol.
Ada beberapa cara untuk memperbaikinya. Anda dapat memodifikasi file; hal paling sederhana untuk dilakukan adalah menyalin dan menempelkan data ke file baru yang dibuat di lingkungan tempat Anda menjalankan SQL*Loader. Ada utilitas untuk mengonversi akhir baris jika Anda mau, mis. dos2unix
. Atau editor Windows Anda mungkin dapat menyimpan file tanpa CR. Anda juga dapat menambahkan pembatas bidang tambahan ke file data, seperti yang disarankan Ditto.
Atau Anda dapat memberi tahu SQL*Loader untuk mengharapkan CRLF dengan mengubah INFILE
baris:
LOAD DATA
INFILE Customer.dat "str '\r\n'"
INTO TABLE Customer
...
... meskipun itu akan menyebabkan masalah jika Anda menyediakan file yang dibuat di Linux, tanpa karakter CR.