Il file CSV è un file delimitato da virgole in cui i campi sono separati dalla virgola. In questo articolo, sto fornendo un esempio per importare il file CSV nella tabella Oracle utilizzando la stored procedure. La procedura memorizzata in Oracle è un'unità di programma PL/SQL che può essere un pacchetto autonomo o in un pacchetto di database.
È necessario disporre di un oggetto directory nel database Oracle che faccia riferimento al percorso del server in cui è archiviato il file. Nell'esempio seguente sto usando il nome dell'oggetto directory come CSV_DIR e il nome della procedura è read_csv. Creata anche una funzione GetString nella procedura read_csv per ottenere la stringa delimitata una per una .
Caricamento del file CSV nella tabella Oracle utilizzando la procedura PL/SQL
CREATE OR REPLACE PROCEDURE read_csv IS l_file_type UTL_FILE.file_type; l_string VARCHAR2 (32765); TYPE Fieldvalue IS TABLE OF VARCHAR2 (4000) INDEX BY BINARY_INTEGER; t_field Fieldvalue; FUNCTION GetString (Source_string IN VARCHAR2, Field_position IN NUMBER, UnTerminated IN BOOLEAN DEFAULT FALSE, Delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS iPtrEnd PLS_INTEGER := 0; iPtrStart PLS_INTEGER := 0; vcSourceStrCopy VARCHAR2 (4000) := Source_string; BEGIN IF UnTerminated THEN vcSourceStrCopy := vcSourceStrCopy || Delimiter; END IF; IF Field_Position > 1 THEN iPtrStart := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position - 1) + LENGTH (Delimiter); ELSE iPtrStart := 1; END IF; iPtrEnd := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position); RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart)); END GetString; BEGIN l_file_type := UTL_FILE.Fopen ('CSV_DIR', 'abc.csv', 'r'); LOOP UTL_FILE.Get_Line (l_file_type, l_string); l_string := l_string || ','; FOR n IN 1 .. REGEXP_COUNT (l_string, ',') LOOP t_field (n) := Getstring (l_string, n, FALSE, ','); END LOOP; INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (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; EXCEPTION WHEN OTHERS THEN IF UTL_FILE.is_open (l_file_type) THEN UTL_FILE.Fclose (l_file_type); END IF; END;
Tieni presente che devi studiare il tuo file CSV per mappare correttamente la tabella di destinazione. Gestisci anche il formato della data per i campi della data, secondo il formato dei dati della tua data CSV.
-
Blockchain:cos'è, come funziona e cosa significa per i big data
-
Controlli di integrità proattivi di SQL Server, parte 4:ERRORLOG
-
Come generare script per ricreare i vincoli di chiave esterna nel database di SQL Server - Tutorial SQL Server/TSQL Parte 73
-
Componenti interni di SQL Server:operatori problematici Pt. III – Ordina