проблема с sql loader

inga
Дата: 27.09.2004 13:50:37
здравствуйте,
у меня проблема с sql loader-ом. ситуация такова:

есть 3 таблички в оракле - A,B,C

есть 1 csv файл - test.csv

каждая строка в csv файле начинается с идентификатора таблички в которую эту запись надо записать

я написала ctl файл но ничего не работает ((

ниже приведу пример csv файла

 

"Stc","111","Склад №1 ""Игрушки""","","01.111"
"Stc","112","Склад №2 ""Книги""","","01.112"
"Stc","113","Склад №3 ""Крупногабаритный товар""","","01.113"
"Stc","117","Склад №7","","01.117"
"Stc","118","Склад №8","","01.118"
"Stc","119","Склад №9","","01.119"
"Kls","""Игрушки""","99","КОРЗИНА","99","КОРЗИНА"
"Kls","""Канцелярские товары""","12","кожанная галантерея","03","чемоданы"
"Kls","""Канцелярские товары""","12","кожанная галантерея","04","барсетки"
"Kls","""Канцелярские товары""","12","кожанная галантерея","05","дипломаты, кейсы"
"Kls","""Канцелярские товары""","12","кожанная галантерея","07","чехлы, другое"
"Kls","""Канцелярские товары""","12","кожанная галантерея","09","ремни"
"Kls","""Канцелярские товары""","12","кожанная галантерея","10","папки"
"Kls","""Канцелярские товары""","12","кожанная галантерея","11","сумки дорожные"
"Bcd","79092","207210","1","0"


а вот мой ctl файл:


LOAD DATA

INFILE 'test.csv'

INTO TABLE DEPARTMENT
WHEN TPRIZNAK = 'Stc'

FIELDS TERMINATED BY ',' 

(
	TPRIZNAK FILLER,	
	CODEDEPT,
	NAMEDEPT,
	TYPEDEPT,
	CODEPART

)

INTO TABLE CLASSIFIER
WHEN TPRIZNAK = 'Kls'

FIELDS TERMINATED BY ',' 

(
	TPRIZNAK FILLER,	
	NSECTION,
	CODE_GRP,
	NAME_GRP,
	CODESGRP,
	NAMESGRP	
)

INTO TABLE CLASSIFIER
WHEN TPRIZNAK = 'Bcd'

FIELDS TERMINATED BY ',' 

(
 TPRIZNAK FILLER,	
 CODEITEM,
 CODESELL,
 WRAPPING,
 DISCOUNT	
)



ничего не работает
помогите пожалуйста
Калина
Дата: 27.09.2004 14:24:49
а поделить файл на 3 части? так наверное и небудет работать , по-крайней мере, я такого никогда не видел и не читал
inga
Дата: 27.09.2004 14:40:24
Точно можно.
Поделить нельзя это не я формирую csv файл, и это скажем так формат.
Калина
Дата: 27.09.2004 14:42:10
а как он различит, какие строки куда вставлять!
Поделить легко, я как-то подобное уже проделывал , cmd файл под виндами - 3 строчки
igor2222
Дата: 27.09.2004 14:42:18
Как вариант залить этот CSV в отдельную таблицу с полем текст(либо сразу с разбивкой через запятую), а потом нарисовать процедурку и перелить всё по своим местам. Если прийдется делать много раз- поможет и в будущем.
Калина
Дата: 27.09.2004 14:43:11
Сорри, вроде как и правда можно, а что в Log пишет?
Калина
Дата: 27.09.2004 14:47:49
igor2222
Как вариант залить этот CSV в отдельную таблицу с полем текст(либо сразу с разбивкой через запятую), а потом нарисовать процедурку и перелить всё по своим местам. Если прийдется делать много раз- поможет и в будущем.

в случае разного количества полей - неудобно, да и в плане всяких там UNDO тоже не очень, и писанины много
у меня была задача залить 7 таблиц с разным количеством полей , сделал разбиение на 7 файлов, оказалось удобно, еще и начальный файл неважно с каким именем, на выходе одно и тоже , те можно грузить сразу, имхо и разбираться легче гораздо
inga
Дата: 27.09.2004 14:58:55

SQL*Loader: Release 9.2.0.1.0 - Production on Mon Sep 27 14:54:15 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Control File:   ldr_all.ctl
Data File:      KIAS.csv
  Bad File:     b.bad
  Discard File:  none specified
 
 (Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 1000
Bind array:     64 rows, maximum of 256000 bytes
Continuation:    none specified
Path used:      Conventional

Table SA$DEPARTMENT, loaded when TPRIZNAK = 0X537463(character 'Stc')
Insert option in effect for this table: INSERT
TRAILING NULLCOLS option in effect

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
TPRIZNAK                            FIRST     *   ,  O(") CHARACTER            
  (FILLER FIELD)
CODEDEPT                             NEXT     *   ,  O(") CHARACTER            
NAMEDEPT                             NEXT     *   ,  O(") CHARACTER            
TYPEDEPT                             NEXT     *   ,  O(") CHARACTER            
CODEPART                             NEXT     *   ,  O(") CHARACTER            

Table SA$CLASSIFIER, loaded when TPRIZNAK = 0X4b6c73(character 'Kls')
Insert option in effect for this table: INSERT
TRAILING NULLCOLS option in effect

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
TPRIZNAK                             NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
NSECTION                             NEXT     *   ,  O(") CHARACTER            
CODE_GRP                             NEXT     *   ,  O(") CHARACTER            
NAME_GRP                             NEXT     *   ,  O(") CHARACTER            
CODESGRP                             NEXT     *   ,  O(") CHARACTER            
NAMESGRP                             NEXT     *   ,  O(") CHARACTER            

Table SA$SELLING_CODE, loaded when TPRIZNAK = 0X426364(character 'Bcd')
Insert option in effect for this table: INSERT
TRAILING NULLCOLS option in effect

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
TPRIZNAK                             NEXT     *   ,  O(") CHARACTER            
  (FILLER FIELD)
CODEITEM                             NEXT     *   ,  O(") CHARACTER            
CODESELL                             NEXT     *   ,  O(") CHARACTER            
WRAPPING                             NEXT     *   ,  O(") CHARACTER            
DISCOUNT                             NEXT     *   ,  O(") CHARACTER            

Record 4: Rejected - Error on table SA$DEPARTMENT, column NAMEDEPT.
no terminator found after TERMINATED and ENCLOSED field
Record 10: Rejected - Error on table SA$DEPARTMENT, column NAMEDEPT.
no terminator found after TERMINATED and ENCLOSED field
Record 11: Rejected - Error on table SA$DEPARTMENT, column NAMEDEPT.
no terminator found after TERMINATED and ENCLOSED field
Record 13: Rejected - Error on table SA$DEPARTMENT, column NAMEDEPT.
no terminator found after TERMINATED and ENCLOSED field
Record 16: Discarded - failed all WHEN clauses.
Record 17: Discarded - failed all WHEN clauses.
Record 18: Discarded - failed all WHEN clauses.
Record 19: Discarded - failed all WHEN clauses.

....

Table SA$DEPARTMENT:
  11 Rows successfully loaded.
  4 Rows not loaded due to data errors.
  54002 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Table SA$CLASSIFIER:
  0 Rows successfully loaded.
  4 Rows not loaded due to data errors.
  54017 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Table SA$SELLING_CODE:
  0 Rows successfully loaded.
  4 Rows not loaded due to data errors.
  54017 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Space allocated for bind array:                 255936 bytes(62 rows)
Read   buffer bytes: 1048576

Total logical records skipped:          0
Total logical records read:         54017
Total logical records rejected:         4
Total logical records discarded:    54002

Run began on Mon Sep 27 14:54:15 2004
Run ended on Mon Sep 27 14:54:22 2004

Elapsed time was:     00:00:07.87
CPU time was:         00:00:01.05



т.е. по какимто непонятным мне причинам он рассамтривает только записи первой таблицы. да еще и ошибку там на ровном месте выдает (((

записей кстати для первой таблицы больше чем 11
igor2222
Дата: 27.09.2004 14:59:28
Согласен, но... последний раз попалась CSV на 35 метров. Причем названия таблиц шли не попорядку. Их количество тоже неизвестно. Известно только что все они есть у определенного юзера. Подобный файл выдают раз в неделю. Каждый раз разбивать? Я один раз попробовал- убил 1,5 часа...
inga
Дата: 27.09.2004 15:03:03
Калина
а как он различит, какие строки куда вставлять!
Поделить легко, я как-то подобное уже проделывал , cmd файл под виндами - 3 строчки


как этот файл выглядит??

и всетаки кто-нибудь помогите с решением.