Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как втянуть в таблицу текстовый файл...  [new]
Serega128
Member

Откуда: от верблюда
Сообщений: 710
Народ, всем привет!
Проблема такая: нужно втянуть в таблицу текстовый файл, в котором каждое поле, строго определенной ширины в байтах.
Дружбан посоветовал такой запрос:

CREATE TABLE emp_load 
 (employee_number CHAR(5), 
  employee_last_name CHAR(20), 
  employee_first_name CHAR(15), 
  employee_middle_name CHAR(15)) 
ORGANIZATION EXTERNAL 
(TYPE ORACLE_LOADER 
 DEFAULT DIRECTORY ext_tab_dir 
 ACCESS PARAMETERS 
(RECORDS FIXED 62 FIELDS 
 (employee_number CHAR(2), 
  employee_dob CHAR(20), 
  employee_last_name CHAR(18), 
  employee_first_name CHAR(11), 
  employee_middle_name CHAR(11))) 
LOCATION ('info.dat'));


но он нифуя не работает, ругается на слово EXTERNAL, код ошибки непомню...
говорят как то можно через sqlldr втянуть... кто знает - дайте рабочий примерчик плиз! Оракл - 8.1.7.
Заранее спасибо!
25 июл 06, 22:47    [2925208]     Ответить | Цитировать Сообщить модератору
 Re: Как втянуть в таблицу текстовый файл...  [new]
contr
Member

Откуда:
Сообщений: 1909
Serega128
Оракл - 8.1.7.

AFAIR, External Tables не для Вас.
Дла Вас - SQL*Loader.
Изучайте Utility Guide либо приведите пример текстового файла и сумму в у.е. :)
25 июл 06, 22:52    [2925215]     Ответить | Цитировать Сообщить модератору
 Re: Как втянуть в таблицу текстовый файл...  [new]
Serega128
Member

Откуда: от верблюда
Сообщений: 710
Вот пример файла, который надо втянуть:

0- 1 0- 0 NOTCON ACT
0- 1 0- 1 TRUNK ACT IDLE
0- 1 0- 2 TRUNK ACT IDLE
0- 1 0- 3 TRUNK ACT IDLE
0- 1 0- 4 TRUNK ACT IDLE
0- 1 0- 5 TRUNK ACT IDLE
0- 1 0- 6 TRUNK ACT IDLE
0- 1 0- 7 TRUNK ACT IDLE
0- 1 0- 8 TRUNK ACT IDLE
0- 1 0- 9 TRUNK ACT IDLE
0- 1 0-10 TRUNK ACT IDLE
0- 1 0-11 TRUNK ACT IDLE

Заранее благодарен за помощь!
26 июл 06, 09:19    [2925714]     Ответить | Цитировать Сообщить модератору
 Re: Как втянуть в таблицу текстовый файл...  [new]
contr
Member

Откуда:
Сообщений: 1909
1) Создадим таблицу:
create table loadertest
( f1 varchar2(2)
, f2 char(1)
, f3 char(2)
, f4 char(1)
, f5 varchar2(15)
, f6 varchar2(10)
)
/

2) Напишем управляющий файл:
--loader.ctl
load data
infile 'text.dat'
append
into table loadertest

( f1 position(1:2) char nullif f1=BLANKS
, f2 position(4:4) char nullif f2=BLANKS
, f3 position(6:7) char nullif f3=BLANKS
, f4 position(9:9) char nullif f4=BLANKS
, f5 position(10) char terminated by WHITESPACE nullif f5=BLANKS
, f6 char terminated by WHITESPACE nullif f6=BLANKS
)
3) запустим загрузку:
C:\Temp\1>sqlldr ***/***@ora10 control=loader.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Wed Jul 26 10:29:27 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Commit point reached - logical record count 12

C:\Temp\1>
4) просмотрим лог:
Table LOADERTEST:
  12 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.
5) проверим данные:
SQL> select * from loadertest;

F1 F F3 F F5              F6
-- - -- - --------------- ----------
0- 1 0- 0 NOTCON          ACT
0- 1 0- 1 TRUNK           ACT
0- 1 0- 2 TRUNK           ACT
0- 1 0- 3 TRUNK           ACT
0- 1 0- 4 TRUNK           ACT
0- 1 0- 5 TRUNK           ACT
0- 1 0- 6 TRUNK           ACT
0- 1 0- 7 TRUNK           ACT
0- 1 0- 8 TRUNK           ACT
0- 1 0- 9 TRUNK           ACT
0- 1 0- 0 TRUNK           ACT
0- 1 0- 1 TRUNK           ACT

12 rows selected.

SQL>
26 июл 06, 10:35    [2926004]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить