2012-05-25 30 views
6

Tôi đang cố chạy một tập hợp các tập lệnh được tạo tự động từ một số lượng lớn nguồn. Thật không may một số trong số này đã được tạo ra như là UTF-8 với BOM. Tôi có một hệ thống để tự động loại bỏ BOM, nhưng một chút của nó là một quá trình lộn xộn.Có thể chạy tập lệnh SQLPLUS trên một tệp được mã hóa là UTF-8 bằng BOM

không tự tháo dỡ các BOM tạo ra các lỗi:

SP2-0042: unknown command "" - rest of line ignored. 

Có thể chạy sqlplus trên một tập tin kịch bản trong đó có một BOM?

+1

Không có ý tưởng, nhưng tôi muốn bắt đầu bằng cách nhìn vào các nhân vật phía khách hàng thiết lập thiết lập để xem nếu nó là khác với UTF-8. Trên thực tế, nếu tự động, tôi sẽ để lại tại chỗ quá trình để dải BOM. –

Trả lời

4

Có thể chạy SQLPLUS với tập lệnh như vậy, nhưng SQLPLUS sẽ chỉ ra lỗi trên dòng đầu tiên vì BOM.
Có thể bạn muốn hỏi xem bạn có thể tránh lỗi này không - không thể, AFAIK. Erwin cũng nghĩ như vậy.

Bạn có thể giải quyết bất kỳ thông tin nào bằng cách tạo các tệp đó bằng dòng đầu tiên trống. Sau đó, bạn chỉ có thể bỏ qua lỗi này.

+1

Đáng buồn là tập lệnh SQL đang được sử dụng như một phần của tập lệnh KSH. Đầu ra lỗi từ SQLPlus sẽ đi lên kịch bản KSH. Cảm ơn phản ứng mặc dù. Nó xác nhận rằng BOM tước là cần thiết. –

3

Đây là lỗi mở với Oracle trong hơn 6 năm nay, nhưng có vẻ như họ không quan tâm đến việc sửa lỗi.

Cách giải quyết được đề xuất của họ '(Doc ID 788156.1 Phần C.6) là loại bỏ BOM hoặc tạo dòng chú thích đầu tiên của bạn, sau đó bỏ qua lỗi này.

SP2-0042: unknown command "" - rest of line ignored.

Hoặc

SP2-0734: unknown command beginning "-- Commen..." - rest of line ignored.

Bug 13515585 Details (yêu cầu đăng nhập OTN):

Bug 13515585: ADD SUPPORT FOR THE UTF-8 BOM IN SQLPLUS 
Bug Status: Internal (Oracle) Review 
Created: 19-Dec-2011 
Updated: 29-Sep-2015