Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle UTL_FILE odczytuje wiersze pliku CSV

Oto przykład, który pokazuje, jak to zrobić. Mój kod różni się nieco od twojego z powodu różnych nazw katalogów i plików.

Przykładowa tabela, która będzie zawierała dane zapisane w pliku:

SQL> create table test2 (id number, fname varchar2(20), lname varchar2(20));

Table created.

Kod; ciekawą częścią jest linia 14 i sposób na podzielenie całego wiersza na osobne wartości:

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.

Wynik:

SQL> select * from test2;

        ID FNAME                LNAME
---------- -------------------- --------------------
       100 Steven               King
       101 Neena                Kochha
       102 Lex                  De Haan
       103 Alexander
       104 Bruce                Ernst

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wielokrotna funkcja REPLACE w Oracle

  2. Dodaj parametr daty do zapytania Oracle

  3. Czy „Wybierz” zawsze porządkuje według klucza podstawowego?

  4. Procedury składowane programu SQL Server firmy Oracle®

  5. Nie znaleziono słowa kluczowego FROM w oczekiwanym miejscu (Oracle SQL)