sql >> Databasteknik >  >> RDS >> Oracle

Importera CSV-fil i Oracle Table med hjälp av lagrad procedur

CSV-fil är en kommaavgränsad fil där fälten är separerade med kommatecken. I den här artikeln ger jag ett exempel på att importera CSV-fil till Oracle-tabellen med hjälp av lagrad procedur. Den lagrade proceduren i Oracle är en PL/SQL-programenhet som kan vara en fristående eller i databaspaket.

Du måste ha ett katalogobjekt i Oracle-databasen som hänvisar till serversökvägen där filen är lagrad. I exemplet nedan använder jag katalogobjektets namn som CSV_DIR och procedurens namn är read_csv. Skapat även en funktion GetString i proceduren read_csv för att få den avgränsade strängen en efter en .

Läser in CSV-fil till Oracle Table med PL/SQL-proceduren

SKAPA ELLER ERSÄTTA PROCEDUR read_csvISl_file_type UTL_FILE.file_type;l_string VARCHAR2 (32765);TYPE Fältvärde IS TABLE OF VARCHAR2 (4000)INDEX BY BINARY_INTEGER;t_field Get INString_Fält INFEANFältnummer, FUNCHARUTer, INFEAN, Fält INSträng_Fältnummer, FUNCTION2, Fältnummer, INFA. ,Avgränsare I VARCHAR2 DEFAULT ',') Avgränsare;END IF;IF Field_Position> 1THENiPtrStart :=INSTR (vcSourceStrCopy,Delimiter,1,Field_Position - 1)+ LENGTH (Delimiter);ELSEiPtrStart :=1;END IF;iPtrEnd :=INSTR (vcSourceStrCopy,Field_StreetCopy);RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart));END GetString;BEGINl_file_type :=UTL_FILE.Fopen ('CSV_DIR', 'abc.csv', 'r');LOOPUTL_FILE.Get_string_Line (,l_string_Line); :=l_sträng || ',';FÖR n I 1 .. REGEXP_COUNT (l_string, ',')LOOPt_field (n) :=Getstring (l_string,n,FALSE,',');END LOOP;INSERT INTO EMP (EMPNO,ENAME,JOBB, MGR,HIREDATE,SAL,COMM,DEPTNO)VÄRDEN (t_field (1),t_field (2),t_field (3),t_field (4),TO_DATE (t_field (5), 'dd/mm/yyyy'), t_field ( 6),t_field (7),t_field (8));END LOOP;UTL_FILE.Fclose (l_file_type);COMMIT;EXCEPTIONWHEN OTHERSTHENIF UTL_FILE.is_open (l_file_type)THENUTL_FILE.Fclose (l_file_type);END>IF;END; 

Observera att du måste studera din CSV-fil för att kartlägga måltabellen korrekt. Hantera även datumformatet för datumfält, enligt ditt CSV-datumdataformat.

  1. SQLite JSON_ARRAY_LENGTH()

  2. Dela anslutning till postgres db över processer i Python

  3. mysql_fetch_array returnerar endast en rad

  4. Välj sista raden i MySQL