Как игнорировать изменяющийся номер дополнительного столбца Field в файле данных при загрузке через sqlldr - PullRequest
0 голосов
/ 22 октября 2019

У меня есть файл данных из 10 данных, разделенных на трубы. Файл данных может иметь менее 10 полей или более 10 полей. Как мне написать контрольный файл в этом случае? Я хочу только 10 полей в моей таблице. Если полей меньше, они должны быть заполнены как ноль, а если больше, то их следует игнорировать.

1 Ответ

1 голос
/ 22 октября 2019

Я бы сказал, что вы ищете TRAILING NULLCOLS.

Кстати, поскольку во входном файле различное количество полей, как вы загружаете разные типы данных? Я предположил, что все они VARCHAR2 s.

Вот пример (я использую только 4 столбца; не очень хотелось печатать так много).

Описание таблицы:

SQL> desc test
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL1                                               VARCHAR2(10)
 COL2                                               VARCHAR2(10)
 COL3                                               VARCHAR2(10)
 COL4                                               VARCHAR2(10)

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

load data 
infile *
replace
into table test
fields terminated by "|" 
trailing nullcols
(
col1,
col2,
col3,
col4
)

begindata
123|Little|foot|four
456|Access||
789|two|three|four|five|six|seven
111|

Загрузка сеанса и его результаты:

SQL> $sqlldr scott/tiger@kc11g control=test31.ctl log=test31.log

SQL*Loader: Release 11.2.0.1.0 - Production on Uto Lis 22 08:02:23 2019

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

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

SQL> select * from test;

COL1       COL2       COL3       COL4
---------- ---------- ---------- ----------
123        Little     foot       four
456        Access
789        two        three      four
111

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...