यहां एक उदाहरण दिया गया है जो दिखाता है कि यह कैसे करना है। अलग-अलग निर्देशिका और फ़ाइल नामों के कारण मेरा कोड आपसे थोड़ा अलग है।
नमूना तालिका, जिसमें फ़ाइल में संग्रहीत डेटा होगा:
SQL> create table test2 (id number, fname varchar2(20), lname varchar2(20));
Table created.
कोड; दिलचस्प हिस्सा है पंक्ति 14 और पूरी पंक्ति को अलग-अलग मानों में विभाजित करने का तरीका:
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.
परिणाम:
SQL> select * from test2;
ID FNAME LNAME
---------- -------------------- --------------------
100 Steven King
101 Neena Kochha
102 Lex De Haan
103 Alexander
104 Bruce Ernst
SQL>