Считывание данных из файла CSV (разделенного запятыми (,)) с помощью загрузчика SQL, когда в данных есть запятая (,) - PullRequest
0 голосов
/ 15 ноября 2018

Я загружаю данные файла CSV в таблицу с именем EMPLOYEE, используя SQL * Loader.

Данные моего файла CSV разделяются запятыми (,):

EMPID,EMPNAME,SALARY,GRADE
123,Rams,1000,A1
124,Sand,"2,000",A2
125,Bhas,"3,00,000",A3

и моим управлениемфайл:

LOAD DATA
Insert INTO TABLE EMPLOYEE
Fields terminated by "," Optionally enclosed by '"' TRAILING NULLCOLS
(
EMPID,
EMPNAME,
SALARY,
GRADE
)

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

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

Пожалуйста, предложите внести изменения, чтобы правильно загрузить данные.

1 Ответ

0 голосов
/ 16 ноября 2018

Пример таблицы:

SQL> create table test
  2    (empid   number,
  3     empname varchar2(20),
  4     salary  varchar2(20),
  5     grade   varchar2(2));

Table created.

SQL>

Контрольный файл:

load data 
infile *
replace
into table test
fields terminated by ',' optionally enclosed by '"' trailing nullcols
( 
  empid,
  empname,
  salary,
  grade
)

begindata
123,Rams,1000,A1
124,Sand,"2,000",A2
125,Bhas,"3,00,000",A3

Сеанс загрузки:

SQL> $sqlldr scott/tiger@xe control=test03.ctl log=test03.log

SQL*Loader: Release 11.2.0.2.0 - Production on ╚et Stu 15 22:27:27 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2
Commit point reached - logical record count 3

SQL>

Результат:

SQL> select * From test;

     EMPID EMPNAME              SALARY               GR
---------- -------------------- -------------------- --
       123 Rams                 1000                 A1
       124 Sand                 2,000                A2
       125 Bhas                 3,00,000             A3

SQL>
...