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

Đang tải dữ liệu XML gặp lỗi cho biết tệp điều khiển của tôi tham chiếu đến trường không tồn tại

Có vẻ như bạn đang trộn lẫn một số cách để làm việc này. Lỗi là do nó đang cố gắng diễn giải "test_file.xml" bên trong LOBFILE() như một tham chiếu trường.

Nếu bạn biết mình sẽ chỉ tải một tài liệu XML từ một tệp văn bản duy nhất, bạn có thể tạo tệp điều khiển của mình:

LOAD DATA
INFILE *
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
    FILL FILLER CHAR(1),
    XMLDATA LOBFILE(CONSTANT test_file.xml) TERMINATED BY EOF
)
BEGINDATA
0

BEGINDATA phần có một hàng với ký tự điền cho mỗi tài liệu XML trong tệp và vì chỉ có một, nên có một ký tự điền.

Lưu ý CONSTANT điều này làm cho nó tìm kiếm một tệp có tên như vậy, không phải một trường. Tệp nhật ký hiển thị tên tĩnh đó:

Table TEST_XML, loaded from every logical record.
Insert option in effect for this table: APPEND

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILL                                FIRST     1           CHARACTER
  (FILLER FIELD)
XMLDATA                           DERIVED     *  EOF      CHARACTER
    Static LOBFILE.  Filename is test_file.xml


Table TEST_XML:
  1 Row successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.

Để sử dụng một trường bạn sẽ có một tệp dữ liệu với tên tệp, hãy gọi nó là test_loading.dat để khớp với tên tệp điều khiển, có chứa:

test_file.xml

Và một tệp điều khiển sử dụng nó làm INFILE và nội dung của trường đầu tiên của nó làm tên tệp:

LOAD DATA
INFILE test_loading.dat
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
    filename FILLER CHAR(30),
    XMLDATA LOBFILE(filename) TERMINATED BY EOF
)

Lần này, tệp nhật ký hiển thị tên đang được truy xuất động:

Table TEST_XML, loaded from every logical record.
Insert option in effect for this table: APPEND

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILENAME                            FIRST    30           CHARACTER
  (FILLER FIELD)
XMLDATA                           DERIVED     *  EOF      CHARACTER
    Dynamic LOBFILE.  Filename in field FILENAME


Table TEST_XML:
  1 Row successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.

Đọc thêm trong tài liệu .

Hoặc sẽ làm việc cho bạn. Vì bạn chỉ có một tệp duy nhất trong ví dụ của mình nên phiên bản đầu tiên có thể đơn giản hơn một chút, nhưng nếu bạn tải nhiều tệp (với một hàng bảng trên mỗi tệp) thì phiên bản thứ hai sẽ hữu ích hơn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt thời gian hết hạn / gia hạn mật khẩu người dùng oracle

  2. Cách tạo chỉ mục cho chuỗi tìm kiếm động

  3. Cách lấy ngày hiện tại trong Oracle

  4. Ràng buộc duy nhất và chỉ mục duy nhất của Oracle

  5. asp cổ điển cách bẫy lỗi khi kết nối với máy chủ được liên kết oracle