Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-01401:giá trị được chèn quá lớn cho cột CHAR

Tệp dữ liệu của bạn có thêm các ký tự ẩn. Chúng tôi không thể thấy bản gốc nhưng có lẽ nó đã được tạo trong Windows và có CRLF dấu phân cách dòng mới ; và bạn đang chạy SQL * Loader trong môi trường UNIX / Linux chỉ mong đợi nguồn cấp dữ liệu dòng (LF). Các ký tự xuống dòng (CR) vẫn còn trong tệp và Oracle đang xem chúng như một phần của trường ZIP trong tệp.

Dòng cuối cùng không có CRLF (hoặc bất kỳ điểm đánh dấu dòng mới nào), vì vậy trên dòng đó - và chỉ dòng đó - trường ZIP đang được xem là 5 ký tự, Đối với tất cả các dòng khác, trường đó được xem là sáu, ví dụ:98001^M .

Bạn có thể đọc thêm về hành vi mặc định trong tài liệu :

Nếu bạn mở tệp dữ liệu trong một bản chỉnh sửa như vi hoặc vim, bạn sẽ thấy những ^M bổ sung đó các ký tự điều khiển.

Có một số cách để sửa lỗi này. Bạn có thể sửa đổi tệp; điều đơn giản nhất để làm điều đó là sao chép và dán dữ liệu vào một tệp mới được tạo trong môi trường mà bạn sẽ chạy SQL * Loader trong đó. Có các tiện ích để chuyển đổi phần cuối dòng nếu bạn thích, ví dụ:dos2unix . Hoặc trình soạn thảo Windows của bạn có thể lưu tệp mà không có CR. Bạn cũng có thể thêm một dấu phân cách trường bổ sung vào tệp dữ liệu, như Ditto đề xuất.

Hoặc bạn có thể yêu cầu SQL * Loader mong đợi CRLF bằng cách thay đổi INFILE dòng:

LOAD DATA
INFILE Customer.dat "str '\r\n'"
INTO TABLE Customer
...

... mặc dù điều đó sau đó sẽ gây ra sự cố nếu bạn cung cấp tệp được tạo trong Linux mà không có ký tự 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. Thực thi thủ tục lưu trữ không đồng bộ trong sql developer

  2. Câu lệnh Oracle DELETE với bao thanh toán truy vấn con

  3. Cách chạy các sql khác nhau để lấy dữ liệu theo dữ liệu đầu vào trước đó trong ấm đun nước pentaho

  4. Truy vấn tổng tối đa

  5. Làm thế nào để biên dịch tất cả các gói không hợp lệ trong lược đồ?