Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Impor File CSV di Tabel Oracle Menggunakan Prosedur Tersimpan

File CSV adalah file yang dipisahkan koma di mana bidang dipisahkan oleh koma. Pada artikel ini, saya memberikan contoh untuk mengimpor file CSV ke tabel oracle menggunakan prosedur tersimpan. Prosedur tersimpan di Oracle adalah unit program PL/SQL yang dapat berdiri sendiri atau dalam paket database.

Anda harus memiliki objek direktori di database Oracle yang merujuk ke jalur server tempat file disimpan. Dalam contoh di bawah ini saya menggunakan nama objek direktori sebagai CSV_DIR dan nama prosedurnya adalah read_csv. Juga dibuat fungsi GetString dalam prosedur read_csv untuk mendapatkan string yang dibatasi satu per satu .

Memuat File CSV ke Tabel Oracle menggunakan Prosedur 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;

Harap dicatat bahwa Anda harus mempelajari file CSV Anda untuk memetakan tabel target dengan benar. Tangani juga format tanggal untuk bidang tanggal, sesuai dengan format data tanggal CSV Anda.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:mengekspor tabel dengan gumpalan ke file .sql yang dapat diimpor lagi

  2. Bagaimana Mengedit Prosedur Tersimpan di Oracle SQL Developer?

  3. Hitung perbedaan antara 2 tanggal / waktu di Oracle SQL

  4. Menemukan penyebab kesalahan kebuntuan dari file jejak Oracle

  5. Cara Mengembalikan Daftar Bahasa yang Didukung di Oracle