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

Tải tệp csv khổng lồ vào bảng cơ sở dữ liệu oracle bằng Pyspark

Hãy để tôi cho bạn xem một ví dụ về tệp điều khiển mà tôi sử dụng để tải một tệp rất lớn (120 triệu bản ghi mỗi ngày)

OPTIONS (SKIP=0, ERRORS=500, PARALLEL=TRUE, MULTITHREADING=TRUE, DIRECT=TRUE, SILENT=(ALL))
UNRECOVERABLE
LOAD DATA
CHARACTERSET WE8ISO8859P1
INFILE '/path_to_your_file/name_of_the_file.txt'
BADFILE '/path_to_your_file/name_of_the_file.bad'
DISCARDFILE '/path_to_your_file/name_of_the_file.dsc'
APPEND
INTO TABLE yourtablename
TRAILING NULLCOLS
(
COLUMN1 POSITION(1:4) CHAR
,COLUMN2 POSITION(5:8)  CHAR
,COLUMN3 POSITION(9:11) CHAR
,COLUMN4 POSITION(12:18) CHAR
....
....)

Một số cân nhắc

  • Việc tải theo vị trí luôn nhanh hơn so với sử dụng dấu phân cách
  • Sử dụng các tùy chọn của PARALLEL , MULTITHREADINGDIRECT để tối ưu hóa hiệu suất tải.
  • UNRECOVERABLE Đây cũng là một lời khuyên hữu ích nếu bạn luôn có tệp trong trường hợp cần khôi phục cơ sở dữ liệu, bạn cần tải lại dữ liệu.
  • Sử dụng bộ ký tự thích hợp.
  • Mệnh đề TRAILING NULLCOLS yêu cầu SQL * Loader xử lý bất kỳ cột nào được định vị tương đối không có trong bản ghi là cột rỗng.
  • Vị trí có nghĩa là mỗi hàng chứa dữ liệu không có bất kỳ dấu phân cách nào, vì vậy bạn biết vị trí của từng trường trong bảng theo độ dài.

AAAAABBBBBBCCCCC19828733UUUU

  • Nếu tệp txt hoặc csv của bạn có dấu phân tách trường, giả sử là dấu chấm phẩy, thì bạn cần sử dụng FIELDS DELIMITED BY

Điều này được lưu trữ trong một tệp điều khiển, thường là một tệp văn bản có phần mở rộng là ctl. Sau đó, bạn gọi từ dòng lệnh

sqlldr userid=youuser/[email protected]_string control=/path_to_control_file/control_file.ctl



  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ách trả về kết quả của nhiều câu lệnh select dưới dạng một bảng tùy chỉnh

  2. Python-Oracle truyền tham số con trỏ ra

  3. Cách tạo thủ tục lưu trữ PL / SQL mà không cần tham số trong cơ sở dữ liệu Oracle

  4. Có một Bảng Oracle được đặt tên là Từ dành riêng, Những vấn đề nào có thể phát sinh?

  5. Chạy SCRIPT từ PL / SQL Block