Oracle
 sql >> база данни >  >> RDS >> Oracle

Заредете огромен csv файл в таблицата на базата данни на oracle с помощта на Pyspark

Нека ви покажа пример за контролен файл, който използвам за зареждане на много голям файл (120 милиона записа всеки ден)

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
....
....)

Някои съображения

  • Винаги е по-бързо зареждането по позиции, отколкото използването на разделители
  • Използвайте опциите на PARALLEL , MULTITHREADING и DIRECT за оптимизиране на производителността на зареждане.
  • UNRECOVERABLE също е добър съвет, ако винаги имате файла, в случай че трябва да възстановите базата данни, трябва да заредите данните отново.
  • Използвайте подходящия набор от знаци.
  • Клаузата TRAILING NULLCOLS казва на SQL*Loader да третира всички относително позиционирани колони, които не присъстват в записа, като нулеви колони.
  • Позиция означава, че всеки ред съдържа данни без разделител, така че да знаете позицията на всяко поле в таблицата по дължината.

AAAAABBBBBBCCCCC19828733UUUU

  • Ако вашият txt или csv файл има разделител на полета, да кажем точка и запетая, тогава трябва да използвате FIELDS DELIMITED BY

Това се съхранява в контролен файл, обикновено текстов файл с разширение ctl. След това извиквате от командния ред

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. Функция FLOOR() в Oracle

  2. SQL Server е паралелен на Oracle DBMS_METADATA.GET_DDL?

  3. Oracle - присъединяване към актуализиране - таблица без ключ

  4. Как да извлечете повтарящи се стойности на json възел отделно от XML с помощта на ORACLE SQL?

  5. Таблица със заявки с различен списък от променливи, използвайки like