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