Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-01401:nilai yang dimasukkan terlalu besar untuk kolom CHAR

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan nilai CSV menggunakan REGEXP_REPLACE di Oracle

  2. Alternatif agnostik versi Oracle ODP.NET

  3. Menghubungkan Oracle menggunakan ODP.NET dengan Enterprise Library DAAB

  4. Menggabungkan data dari kursor menjadi satu

  5. Tambahkan 2 bulan ke stempel waktu saat ini