sql >> Database teknologi >  >> RDS >> Oracle

Indlæs enorm csv-fil i Oracle-databasetabellen ved hjælp af Pyspark

Lad mig vise dig et eksempel på en kontrolfil, jeg bruger til at indlæse en meget stor fil (120 millioner poster hver 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
....
....)

Nogle overvejelser

  • Det er altid hurtigere at indlæse efter positioner end at bruge afgrænsere
  • Brug mulighederne for PARALLEL , MULTITHREADING og DIRECT for at optimere indlæsningsydelsen.
  • UNRECOVERABLE er også et godt råd, hvis du altid har filen, hvis du har brug for at gendanne databasen, skal du indlæse dataene igen.
  • Brug det relevante tegnsæt.
  • TAILING NULLCOLS-udtrykket beder SQL*Loader om at behandle alle relativt placerede kolonner, der ikke er til stede i posten, som null-kolonner.
  • Placering betyder, at hver række indeholder data uden nogen afgrænsning, så du kender placeringen af ​​hvert felt i tabellen efter længden.

AAAAABBBBBBCCCCC19828733UUUU

  • Hvis din txt- eller csv-fil har en feltseparator, lad os sige semikolon, så skal du bruge FIELDS DELIMITED BY

Dette gemmes i en kontrolfil, normalt en tekstfil med endelsen ctl. Så kalder du fra kommandolinjen

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



  1. Hvorfor returnerer AES_DECRYPT null?

  2. Returner funktion Javascript

  3. Sådan opdeles kommasepareret tekst i MySQL-lagret procedure

  4. SQL-forespørgsel:Hent-ordnede rækker fra en tabel - II