Проблема загрузки файла с разделителями табуляции Sqlldr - PullRequest
0 голосов
/ 02 июля 2019

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

LOAD DATA
INFILE 'tab1.txt'
BADFILE 'tab1.bad'
DISCARDFILE 'tab1.dsc'
REPLACE INTO TABLE CL_TAB1 
FIELDS TERMINATED BY X'9' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
A,B,C,D,E
)

tab1.txt Файл похож на ниже

A   B   C   D   E
799 CP  AM  27-12-2017
800 CP      18-05-2017
801             USA     
  1. Если я не упоминаю TRAILING NULLCOLS с именами столбцов, sqlldr загружает в таблицу только нулевые значения.
  2. Когда я перечислял имена столбцов в TRAILING NULLCOLS, sqlldr загружается, как показано ниже в таблице.

A   B   C   D   E
799 CP  AM  27-12-2017      (Note: this is ok record)
800 CP  18-05-2017          (Note: 18-05-2017 should be loaded onto D col, but loaded onto C)
801 USA                     (Note: USA should be loaded onto E col, but loaded onto B)

Пожалуйста, помогите.

1 Ответ

1 голос
/ 02 июля 2019

Если вы не упомянули, OPTIONALLY ENCLOSED BY '"' -> SQLLDR работает правильно.

См. Мой пример:

DDL

DROP TABLE TAB1;

CREATE TABLE TAB1 (
    A   VARCHAR2(100),
    B   VARCHAR2(100),
    C   VARCHAR2(100),
    D   VARCHAR2(100),
    E   VARCHAR2(100)
);

Tab1.txt

A   B   C   D   E
799 CP  AM  27-12-2017
800 CP      18-05-2017
801             USA

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

LOAD DATA
INFILE 'tab1.txt'
BADFILE 'tab1.bad'
DISCARDFILE 'tab1.dsc'
REPLACE INTO TABLE TAB1 
FIELDS TERMINATED BY X'9'
TRAILING NULLCOLS
(
A,B,C,D,E
)

SQLLDR исполнение

>sqlldr userid=tejash/***** control=tab1.ctl

SQL*Loader: Release 12.2.0.1.0 - Production on Tue Jul 2 11:43:33 2019

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

Path used:      Conventional
Commit point reached - logical record count 3
Commit point reached - logical record count 4

Table TAB1:
  4 Rows successfully loaded.

Check the log file:
  tab1.log
for more information about the load.

Данные в таблице TAB1

A   B   C   D   E
799 CP  AM  27-12-2017  
800 CP      18-05-2017  
801             USA

enter image description here

Первая строка текстового файла - это просто заголовок, и если вы хотите пропустить заголовок, вам нужно будет использовать OPTIONS(skip=1) в контрольном файле.

...