powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как составить контрольный файл SQL* Loader для загрузки этих данных?
10 сообщений из 10, страница 1 из 1
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165454
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
|7369|SMITH|CLERK|7902|17.12.1980|800|0000000.00|20|
|7499|ALLEN|SALESMAN|7698|20.02.1981|1600|0000300.00|30|
|7521|WARD|SALESMAN|7698|22.02.1981|1250|0000500.00|30|
|7566|JONES|MANAGER|7839|02.04.1981|2975|0000000.00|20|
|7654|MARTIN|SALESMAN|7698|28.09.1981|1250|0001400.00|30|
|7698|BLAKE|MANAGER|7839|01.05.1981|2850|0000000.00|30|
|7782|CLARK|MANAGER|7839|09.06.1981|2450|0000000.00|10|
|7788|SCOTT|ANALYST|7566|09.12.1982|3000|0000000.00|20|
|7839|KING|PRESIDENT|0000|17.11.1981|5000|0000000.00|10|
|7844|TURNER|SALESMAN|7698|08.09.1981|1500|0000000.00|30|
|7876|ADAMS|CLERK|7788|12.01.1983|1100|0000000.00|20|
|7900|JAMES|CLERK|7698|03.12.1981|950|0000000.00|30|
|7902|FORD|ANALYST|7566|03.12.1981|3000|0000000.00|20|
|7934|MILLER|CLERK|7782|23.01.1982|1300|0000000.00|10|


Описание таблицы для sqlldr, что-бы не мучатся.

(EMPNO,
ENAME,
JOB,
MGR,
HIREDATE DATE "DD.MM.YYYY",
SAL,
COMM,
DEPTNO,
empid sequence(count,1)
)


Создать таблицу можно так:
create table emp2 as
select * from emp
where rownum<1;

Таблица emp создаётся:
@?/sqlplus/demo/demobld;
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165467
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, в чем прикол? В доке ведь рассматривается пример на эти данные. Или у тебя что-то не получается?
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165564
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to .dba:

Меня похоже клинит или я чего-то недочитал.
Во такие варианты, я понимаю как сделать:

Код: plaintext
1.
2.
3.
4.
5.
6.
 1 )
 7369 |SMITH|CLERK| 7902 | 17 . 12 . 1980 | 800 | 0000000 . 00 | 20 
 2 )
| 7369 |,|SMITH|,|CLERK|,| 7902 |,| 17 . 12 . 1980 |,| 800 |,| 0000000 . 00 |,| 20 | 
 3 )
 7369 |SMITH|CLERK| 7902 | 17 . 12 . 1980 | 800 | 0000000 . 00 | 20 |

А такой не понимаю:
Код: plaintext
1.
| 7369 |SMITH|CLERK| 7902 | 17 . 12 . 1980 | 800 | 0000000 . 00 | 20 | 


Подскажи если не трудно.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165576
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
LOAD DATA
INFILE *
INTO TABLE emp2
FIELDS TERMINATED BY '|'
(dummy filler CHAR,
EMPNO, 
ENAME, 
JOB, 
MGR, 
HIREDATE DATE  "DD.MM.YYYY" , 
SAL, 
COMM  "TO_NUMBER(:COMM, '9999999.99')" ,
DEPTNO, 
empid sequence(count, 1 ) 
)
BEGINDATA
| 7369 |SMITH|CLERK| 7902 | 17 . 12 . 1980 | 800 | 0000000 . 00 | 20 |
| 7499 |ALLEN|SALESMAN| 7698 | 20 . 02 . 1981 | 1600 | 0000300 . 00 | 30 |
| 7521 |WARD|SALESMAN| 7698 | 22 . 02 . 1981 | 1250 | 0000500 . 00 | 30 |
| 7566 |JONES|MANAGER| 7839 | 02 . 04 . 1981 | 2975 | 0000000 . 00 | 20 |
| 7654 |MARTIN|SALESMAN| 7698 | 28 . 09 . 1981 | 1250 | 0001400 . 00 | 30 |
| 7698 |BLAKE|MANAGER| 7839 | 01 . 05 . 1981 | 2850 | 0000000 . 00 | 30 |
| 7782 |CLARK|MANAGER| 7839 | 09 . 06 . 1981 | 2450 | 0000000 . 00 | 10 |
| 7788 |SCOTT|ANALYST| 7566 | 09 . 12 . 1982 | 3000 | 0000000 . 00 | 20 |
| 7839 |KING|PRESIDENT| 9999 | 17 . 11 . 1981 | 5000 | 0000000 . 00 | 10 |
| 7844 |TURNER|SALESMAN| 7698 | 08 . 09 . 1981 | 1500 | 0000000 . 00 | 30 |
| 7876 |ADAMS|CLERK| 7788 | 12 . 01 . 1983 | 1100 | 0000000 . 00 | 20 |
| 7900 |JAMES|CLERK| 7698 | 03 . 12 . 1981 | 950 | 0000000 . 00 | 30 |
| 7902 |FORD|ANALYST| 7566 | 03 . 12 . 1981 | 3000 | 0000000 . 00 | 20 |
| 7934 |MILLER|CLERK| 7782 | 23 . 01 . 1982 | 1300 | 0000000 . 00 | 10 |


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> select * from emp2;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO      EMPID
 ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- ----------
 
       7369  SMITH      CLERK            7902   17 . 12 . 80          800            0           20            1 
       7499  ALLEN      SALESMAN         7698   20 . 02 . 81         1600          300           30            2 
       7521  WARD       SALESMAN         7698   22 . 02 . 81         1250          500           30            3 
       7566  JONES      MANAGER          7839   02 . 04 . 81         2975            0           20            4 
       7654  MARTIN     SALESMAN         7698   28 . 09 . 81         1250         1400           30            5 
       7698  BLAKE      MANAGER          7839   01 . 05 . 81         2850            0           30            6 
       7782  CLARK      MANAGER          7839   09 . 06 . 81         2450            0           10            7 
       7788  SCOTT      ANALYST          7566   09 . 12 . 82         3000            0           20            8 
       7839  KING       PRESIDENT        9999   17 . 11 . 81         5000            0           10            9 
       7844  TURNER     SALESMAN         7698   08 . 09 . 81         1500            0           30           10 
       7876  ADAMS      CLERK            7788   12 . 01 . 83         1100            0           20           11 
       7900  JAMES      CLERK            7698   03 . 12 . 81          950            0           30           12 
       7902  FORD       ANALYST          7566   03 . 12 . 81         3000            0           20           13 
       7934  MILLER     CLERK            7782   23 . 01 . 82         1300            0           10           14 

 14  Zeilen ausgew 228 ;hlt.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165583
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, добрый человек! :)

Вот значит оно как - фиктивный столбец можно указывать.
Теперь понятно. Я так понимаю в 8.0.X этого не было?

Вобщем в любом случае - не дочитал я.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165598
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Well, there is a caveat. Usually there is an Oracle sequence behind such column. Since SQL*Loader sequence is a separate structure, you need to adjust Oracle sequence manually after the load (which is not too difficult to do as long as you remember to do it). Also, using SQL*Loader sequence can cause issues if:

a) multiple loads can be done at the same time (e.g. data is coming from multiple sources which is a common case in data warehousing).
b) Application(s) can insert into the table while you are loading (which is the case in all 24x7 shops)

So if you want Oracle sequence to be adjusted automatically or you can not use SQL*Loader sequences for the above (or any other) reasons, you could use the following technique:

1. add a column to datafile - value does not matter. For example add value 1. This step can be (and should be) automated anyway.
2. Use empid "EMPID_SEQ.NEXTVAL" in control file:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SQL> CREATE TABLE EMP2
   2     AS
   3       SELECT  EMPNO,
   4               ENAME,
   5               JOB,
   6               MGR,
   7               HIREDATE,
   8               SAL,
   9               COMM,
  10               DEPTNO,
  11                1  EMPID
  12         FROM  EMP
  13         WHERE  1  =  2 
  14   /

Table created.

SQL> desc emp2;
 Name                                      Null?    Type
  ----------------------------------------- -------- ----------------------------
 
 EMPNO                                              NUMBER( 4 )
 ENAME                                              VARCHAR2( 10 )
 JOB                                                VARCHAR2( 9 )
 MGR                                                NUMBER( 4 )
 HIREDATE                                           DATE
 SAL                                                NUMBER( 7 , 2 )
 COMM                                               NUMBER( 7 , 2 )
 DEPTNO                                             NUMBER( 2 )
 EMPID                                              NUMBER

SQL> create sequence empid_seq;

Sequence created.

Load using the following control file:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
LOAD DATA
INFILE *
INTO TABLE emp2
FIELDS TERMINATED BY '|'
(dummy filler CHAR,
EMPNO, 
ENAME, 
JOB, 
MGR, 
HIREDATE DATE  "DD.MM.YYYY" , 
SAL, 
COMM  "TO_NUMBER(:COMM, '9999999.99')" ,
DEPTNO, 
empid  "EMPID_SEQ.NEXTVAL"  
)
BEGINDATA
| 7369 |SMITH|CLERK| 7902 | 17 . 12 . 1980 | 800 | 0000000 . 00 | 20 | 1 
| 7499 |ALLEN|SALESMAN| 7698 | 20 . 02 . 1981 | 1600 | 0000300 . 00 | 30 | 1 
| 7521 |WARD|SALESMAN| 7698 | 22 . 02 . 1981 | 1250 | 0000500 . 00 | 30 | 1 
| 7566 |JONES|MANAGER| 7839 | 02 . 04 . 1981 | 2975 | 0000000 . 00 | 20 | 1 
| 7654 |MARTIN|SALESMAN| 7698 | 28 . 09 . 1981 | 1250 | 0001400 . 00 | 30 | 1 
| 7698 |BLAKE|MANAGER| 7839 | 01 . 05 . 1981 | 2850 | 0000000 . 00 | 30 | 1 
| 7782 |CLARK|MANAGER| 7839 | 09 . 06 . 1981 | 2450 | 0000000 . 00 | 10 | 1 
| 7788 |SCOTT|ANALYST| 7566 | 09 . 12 . 1982 | 3000 | 0000000 . 00 | 20 | 1 
| 7839 |KING|PRESIDENT| 9999 | 17 . 11 . 1981 | 5000 | 0000000 . 00 | 10 | 1 
| 7844 |TURNER|SALESMAN| 7698 | 08 . 09 . 1981 | 1500 | 0000000 . 00 | 30 | 1 
| 7876 |ADAMS|CLERK| 7788 | 12 . 01 . 1983 | 1100 | 0000000 . 00 | 20 | 1 
| 7900 |JAMES|CLERK| 7698 | 03 . 12 . 1981 | 950 | 0000000 . 00 | 30 | 1 
| 7902 |FORD|ANALYST| 7566 | 03 . 12 . 1981 | 3000 | 0000000 . 00 | 20 | 1 
| 7934 |MILLER|CLERK| 7782 | 23 . 01 . 1982 | 1300 | 0000000 . 00 | 10 | 1 

Check results:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> select * from emp2;

 EMPNO ENAME      JOB         MGR HIREDATE         SAL  COMM  DEPTNO  EMPID
 ------ ---------- --------- ----- --------- ---------- ----- ------- ------
 
   7369  SMITH      CLERK       7902   17 -DEC- 80          800       0        20        1 
   7499  ALLEN      SALESMAN    7698   20 -FEB- 81         1600     300        30        2 
   7521  WARD       SALESMAN    7698   22 -FEB- 81         1250     500        30        3 
   7566  JONES      MANAGER     7839   02 -APR- 81         2975       0        20        4 
   7654  MARTIN     SALESMAN    7698   28 -SEP- 81         1250    1400        30        5 
   7698  BLAKE      MANAGER     7839   01 -MAY- 81         2850       0        30        6 
   7782  CLARK      MANAGER     7839   09 -JUN- 81         2450       0        10        7 
   7788  SCOTT      ANALYST     7566   09 -DEC- 82         3000       0        20        8 
   7839  KING       PRESIDENT   9999   17 -NOV- 81         5000       0        10        9 
   7844  TURNER     SALESMAN    7698   08 -SEP- 81         1500       0        30       10 
   7876  ADAMS      CLERK       7788   12 -JAN- 83         1100       0        20       11 

 EMPNO ENAME      JOB         MGR HIREDATE         SAL  COMM  DEPTNO  EMPID
 ------ ---------- --------- ----- --------- ---------- ----- ------- ------
 
   7900  JAMES      CLERK       7698   03 -DEC- 81          950       0        30       12 
   7902  FORD       ANALYST     7566   03 -DEC- 81         3000       0        20       13 
   7934  MILLER     CLERK       7782   23 -JAN- 82         1300       0        10       14 

 14  rows selected.

SQL> select empid_seq.nextval from dual;

   NEXTVAL
 ----------
 
         15 


SY.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32165677
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SY:

Не хочу затевать новую тему для обсуждения, так вопрос уже понятен.
Но всё-же непонятно зачем так извращяться для заполнения поля EMPID с сиквенсом, когда для этого есть специальное ключевое слово.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32166210
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder:

I guess I missed it in SQL*Loader docs. What keyword do you have in mind?

SY.
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32166245
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два варианта заполнить столбец последовательными числами:

1) empid sequence(count,1)

2) empid RECNUM

Ключевые слова sequence, recnum
...
Рейтинг: 0 / 0
Как составить контрольный файл SQL* Loader для загрузки этих данных?
    #32166361
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder:

I thought I already explained SQL*Loader sequence and recnum have scope limited to current SQL*Loader session. If it is possible two SQL*Loader sessions load at the same time to emp2 using sequence or recnum, then both will try to load two rows with same empid (both sessions will get same count from emp2). Also, if it is possible some application issues insert into emp2 while SQL*loader is loading emp2 using sequence or recnum, again there will be attempt to insert two rows with same empid. And since empid, I would assume, has to be unique load will not complete correctly. In such scenarios it all depends if there is a trigger on emp2 assigning Oracle sequence value to empid. If such trigger is in place, you do not need to do a thing in SQL*Loader. Otherwise, you could use solution I described.

SY.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как составить контрольный файл SQL* Loader для загрузки этих данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]