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

Trình tải Sql - không có chuỗi bao vây thứ hai

Nếu trường cuối cùng của bạn luôn hiện diện (mặc dù trailing nullcols gợi ý là không) và bạn có một số quyền kiểm soát định dạng, bạn có thể sử dụng CONTINUEIF chỉ thị coi dòng thứ hai là một phần của cùng một bản ghi lôgic.

Nếu comments trường luôn hiện diện và được đặt trong dấu ngoặc kép thì bạn có thể thực hiện:

...
truncate
continueif last != x'22'
into table ...

Cái nào sẽ xử lý các bản ghi dữ liệu như:

S;Y;"Test 1"
F;N;"Test 2"
P;Y;"Test with
new line"
P;N;""

Hoặc nếu bạn luôn có dấu phân cách sau trường nhận xét, cho dù trường đó có được điền hay không:

...
truncate
continueif last != ';'
into table ...

Điều nào sẽ xử lý:

S;Y;Test 1;
F;N;"Test 2";
P;Y;Test with
new line;
P;N;;

Cả hai cách sẽ tải dữ liệu dưới dạng:

S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test withnew line
P N

Nhưng điều này làm mất dòng mới từ dữ liệu. Để giữ điều đó, bạn cần có dấu phân cách trường kết thúc và thay vì CONTINUEIF bạn có thể thay đổi dấu phân tách bản ghi bằng cách sử dụng định dạng bản ghi luồng :

...
infile 'C:\Users\lab.csv' "str ';\n'"
truncate
into table ...

"str ';\n'" định nghĩa phần tử kết thúc là sự kết hợp của phần tử kết thúc trường và một ký tự dòng mới. Nhận xét phân tách của bạn chỉ có sự kết hợp đó trên dòng cuối cùng. Với cùng một tệp dữ liệu như phiên bản trước, điều này cho:

S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test with
    new line

P N

4 rows selected.

Vì bạn đang sử dụng Windows, bạn có thể phải bao gồm \r ở định dạng, ví dụ:"str ';\r\n'" , nhưng tôi không thể kiểm tra điều đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể xếp hàng từ hàng đợi ANYDATA Synchronous Capture bằng JDBC không?

  2. Oracle:Sử dụng CTE với điều khoản cập nhật

  3. Sự khác biệt giữa CLOB và NCLOB là gì?

  4. Lỗi Oracle sau có nghĩa là gì:chỉ mục cột không hợp lệ

  5. Lỗi câu lệnh Oracle MERGE (ORA-30926)