Berikut adalah contoh yang menunjukkan cara melakukannya. Kode saya sedikit berbeda dari kode Anda karena direktori dan nama file yang berbeda.
Contoh tabel, yang akan berisi data yang disimpan dalam file:
SQL> create table test2 (id number, fname varchar2(20), lname varchar2(20));
Table created.
Kode; bagian yang menarik adalah baris 14 dan cara membagi seluruh baris menjadi nilai terpisah:
SQL> declare
2 l_file utl_file.file_type;
3 l_text varchar2(32767);
4 l_cnt number;
5 begin
6 -- Open file.
7 l_file := utl_file.fopen('EXT_DIR', 'test2.txt', 'R', 32767);
8
9 loop
10 utl_file.get_line(l_file, l_text, 32767);
11
12 -- L_TEXT contains the whole row; split it (by commas) into 3 values
13 -- and insert them into the TEST2 table
14 insert into test2 (id, fname, lname)
15 values (regexp_substr(l_text, '[^,]+', 1, 1),
16 regexp_substr(l_text, '[^,]+', 1, 2),
17 regexp_substr(l_text, '[^,]+', 1, 3)
18 );
19 end loop;
20
21 utl_file.fclose(l_file);
22 exception
23 when no_data_found then
24 null;
25 end;
26 /
PL/SQL procedure successfully completed.
Hasilnya:
SQL> select * from test2;
ID FNAME LNAME
---------- -------------------- --------------------
100 Steven King
101 Neena Kochha
102 Lex De Haan
103 Alexander
104 Bruce Ernst
SQL>