GOOGLE ADS

воскресенье, 1 мая 2022 г.

Как загрузить один файл данных в несколько таблиц с помощью загрузчика sql в примере oracle 10g

Create table emp (id varchar2(22), name varchar2(85),hire_date date,department_id varchar2(3));
create table emp_epfo as select id emp_id,name lname,hire_date,department_id dept_id from emp where 1=2;

Файл управления

LOAD DATA
INFILE '/image/ExtTableData/OnlineClaims/member_master.csv'
TRUNCATE
INTO TABLE EMP
FIELDS TERMINATED BY ","
(ID,NAME,
HIRE_DATE,DEPARTMENT_ID)
INTO TABLE EMP_EPFO
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(EMP_ID,LNAME,HIRE_DATE,DEPT_ID)


Решение проблемы

Вы можете использовать один управляющий файл для загрузки данных в более чем одну таблицу с помощью SQLLDR. Что вам нужно иметь в виду, так это то,

 LOAD DATA
INFILE '/image/ExtTableData/OnlineClaims/member_master.csv'
TRUNCATE
INTO TABLE EMP
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(ID POSITION(1),
NAME,
HIRE_DATE,
DEPARTMENT_ID
)
INTO TABLE EMP_EPFO
(EMP_ID POSITION(1),
LNAME,
HIRE_DATE,
DEPT_ID
)

Причиной указания POSITION(1)после столбцов для отдельных таблиц является указание Oracle начать чтение данных с первой строки.

Цитата из документации Oracle:

Когда параметр POSITION не используется, несколько предложений INTO TABLE обрабатывают разные части одной и той же входной записи (данные с разделителями), позволяя загружать несколько таблиц из одной записи. Когда используется параметр POSITION, несколько предложений INTO TABLE могут обрабатывать одну и ту же запись по-разному, позволяя распознавать несколько форматов в одном входном файле.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...