sql >> Database >  >> RDS >> Oracle

Laad een enorm csv-bestand in de Oracle-databasetabel met behulp van Pyspark

Laat me je een voorbeeld tonen van een controlebestand dat ik gebruik om een ​​heel groot bestand te laden (120 miljoen records per dag)

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

Enkele overwegingen

  • Het laden van posities gaat altijd sneller dan het gebruik van scheidingstekens
  • Gebruik de opties van PARALLEL , MULTITHREADING en DIRECT om de laadprestaties te optimaliseren.
  • UNRECOVERABLE is ook een goed advies als u het bestand altijd bij de hand heeft voor het geval u de database moet herstellen, u de gegevens opnieuw moet laden.
  • Gebruik de juiste tekenset.
  • De TRAILING NULLCOLS-clausule vertelt SQL*Loader om relatief gepositioneerde kolommen die niet in het record aanwezig zijn, als nulkolommen te behandelen.
  • Positie betekent dat elke rij gegevens bevat zonder scheidingsteken, zodat u de positie van elk veld in de tabel weet aan de hand van de lengte.

AAAAABBBBBBCCCCC19828733UUUU

  • Als uw txt- of csv-bestand een veldscheidingsteken heeft, laten we zeggen een puntkomma, dan moet u de FIELDS DELIMITED BY gebruiken

Dit wordt opgeslagen in een controlebestand, normaal gesproken een tekstbestand met de extensie ctl. Vervolgens roep je aan vanaf de opdrachtregel

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



  1. Toon datum zoals 30-04-2020 in plaats van 2020-04-30 uit mysql-database met javascript

  2. Hasj Wat? Hash-indexen begrijpen

  3. Hoe retourneer ik 0 van een MySQL db wanneer de term in de Where-clausule niet in de database staat?

  4. Om Vim-achtige K in Screen voor MySQL te hebben