Как загрузить данные из CSV файла в БД через SQL запрос?

Есть большой CSV файл с таблицей, которую нужно загрузить в БД.

Для этого пишу в DataGrip SQL скрипт, но не знаю даже с чего начать.


Ответы (2 шт):

Автор решения: Alex R.

В этом ответе я рассказывал про SQL*Loader, через него можно загрузить файл с данными.

→ Ссылка
Автор решения: 0xdb

Чисто SQL решение, создать внешнию таблицу (External Tables) и загружать из неё данные в целевые таблицы.

Допустим, есть CSV файл params.csv такой структуры:

1;key1;val1
2;key2;val2
3;key3;val3

Поместите его в доступный каталог на БД сервере, например /tmp/extfiles/, и создайте (если ещё не существует) объект директории:

create or replace directory extfiles as '/tmp/extfiles';

Теперь можно создать таблицу (см. описание параметров):

create table tabext1 (id number, key varchar2 (8), val varchar2 (16))
    organization external (
        default directory extfiles 
        access parameters (fields terminated by ";")
        location ('params.csv'));

И далее, обращаться к ней SQL запросами как к обычной таблице:

select * from tabext1;

        ID KEY      VAL             
---------- -------- ----------------
         1 key1     val1            
         2 key2     val2            
         3 key3     val3            

На заметку:
В основном существует два способа загрузить CSV файлы в таблицы: External Tables и SQL*Loader. Для правильного выбора одного критерия: большой CSV файл, недостаточно.
Ознакомтесь с разделом: Behavior Differences Between SQL*Loader and External Tables.

→ Ссылка