Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / CURSOR из файла / 12 сообщений из 12, страница 1 из 1
19.10.2011, 12:58
    #37488642
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
Добрий день,

Извените за наивный вопрос:

Возможно ли, каким нибудь образом организаовать цикл по данним из файла ( например csv),
средствами DB2 без исползования импорта во временую таблицу или процедур на других языках

ну что то типа:

begin
for cur as -- здесь выбор из файла
do
...............................
end for;

end@

Прошу не бить.
Зарание спасибо.
...
Рейтинг: 0 / 0
20.10.2011, 11:08
    #37490253
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
Сам руками не пробовал, но наверное правильный путь - через data source - ftp://public.dhe.ibm.com/ps/products/db2/info/vr82/pdf/en_US/iiylse81.pdf, 21-я глава.

Удачи!
...
Рейтинг: 0 / 0
20.10.2011, 13:04
    #37490502
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
CawaSPb,

Спасибо это было бы то что нужно,
но к сожалению:
get database manager configuration@
.................
Federated Database System Support (FEDERATED) = NO
....................
а у меня нет прав на изменения:

update dbm cfg using FEDERATED YES@

Category Timestamp Duration Message Line Position
Error 10/20/2011 10:50:01.2056 AM 0:00:00.203 DB2 Database Error: ERROR [] [IBM][DB2/SUN64] SQL5001N does not have the authority to change the database manager configuration file.


Тлеет надежда, может есть ешё другие варианты, идеии?
...
Рейтинг: 0 / 0
20.10.2011, 21:51
    #37491397
knudsen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
mbrg,

А если просто программку написать (например на С++ или Delphi) - читаешь в цикле плоский файл и выполняешь dynamic SQL...с нужными параметрами... а?

For i:=1 to 10000 do begin
For j:=1 to FRTTR do begin
SQLSTR:='INSERT INTO SCHEMA.TABLE VALUES( 1, '+IntToStr(I)+', '+IntToStr(J)+', 4,'+Y1+' )';
Query1.SQL.Clear;
QueryTest1.SQL.Add(SQLSTR);
QueryTest1.ExecSQL;
end;
end;
...
Рейтинг: 0 / 0
20.10.2011, 23:33
    #37491456
knudsen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
не понимаю почему всё должно буть в процедуре? чтобы переносить в другую систему? плоские файлы тоже?
...
Рейтинг: 0 / 0
21.10.2011, 02:28
    #37491533
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
knudsen,

Добрий вечер,

ситуация такая, в базе есть несколько различных процедур
с разными входными параметрами, обычно они вызываютя из програмы на ,
это нормальный режим.
Но иногда после каких то збоев нужно вызвать какуюто из этих процедур вручную,
причем значения присылают из другого отдела как файл.
Например бракованые детали нужно удалить из базы это делает процедура p1(id)
в другой раз детали нужно переименовать вызывается процедура p2(id1,id2), возможны и другие варианты.

Поэтому в виде :

begin
for as select id -- iz file
do
call p1(id);
end for;
end@

а в следующий раз:

begin
for as select id1, id2 -- iz file
do
call p2(id1,id2);
end for;
end@

мне кажется было бы удобно.
...
Рейтинг: 0 / 0
21.10.2011, 16:58
    #37492758
sadsad_at_tomsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
...
Рейтинг: 0 / 0
21.10.2011, 18:07
    #37492916
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
sadsad_at_tomsk,

Добрый день,

извеняюсь что раньше не известил,
к сожалению у меня 9.5 она похоже ещё не знает что такое UTL_FILE .

Datenbank-Server = DB2/SUN64 9.5.8
...
Рейтинг: 0 / 0
22.10.2011, 15:05
    #37493637
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
mbrg,

Надо определиться зачем именно нам нужна возможность организации цикла.

Если это просто небольшой syntax sugar, то по-моему тут овчинка выделки не стоит. Ну, можно external table function написать, если хочется; нужно будет CSV парсить самостоятельно, но тут дело нехитрое (главное ошибки в формате аккуратно отработать).

Если приходящий CSV у нас реально большой, мы не хотим его сами сначала целиком читать, и нам важна скорость, то тут LOAD с последующей работой со временной таблицей будет, наверное, лучшим решением.

Если же CSV очень-очень-очень большой, и хочется организовать что-то вроде потока из данных, а база не federated (или имеющийся враппер нас чем-то не устраивает), то можно создать отдельный процесс (запускающийся по заданному событию в базе), читающий указанный CSV с соответствующей буферизацией и отдающий одну или N строк соответствующей самописной table function (процесс, читающий CSV, может запускаться по факту первого вызова этой функции).


sadsad_at_tomsk,
UTL_FILE - хорошо, но парсить полученную строку кроме тривиальных случаев будет ой как неудобно.
...
Рейтинг: 0 / 0
24.10.2011, 14:07
    #37495236
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
CawaSPb,

Добрый день,
спасибо за активное участие в обсуждении.

Я делаю сейчас при помощи импорта:

IMPORT FROM "path\lookup.del" OF DEL METHOD P (2,1) MESSAGES "path\lookup_imp_del.log"
INSERT INTO (SNL_VARIANTE,SNL_SACHNR);

потом цикл по TMP_TAB

все работает.
програмку на JAVA например тоже нет проблем написать.

С external table function, как передать ей файл?
если через пути к файлу, где он будет его искать на сервере или на клиенте откуда вызывается функция?

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

Мне казалось что должно быть что то подходящее о чем я не знаю.
...
Рейтинг: 0 / 0
24.10.2011, 15:08
    #37495376
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
mbrg,

Имя файла - параметром.
Выполняться это будет соответственно на сервере, но ничто не мешает имени файла быть сетевым (да хоть по http его забирать).

Но опять таки надо определиться, зачем нам всё это нужно. Скорость важна или файл крошечный? Имеет смысл "огород городить"?

Подходящее - то, что умеет в принципе CSV распознавать. Это как раз IMPORT/LOAD и соответствующий враппер. Остальное - инструменты для своих решений, коих в данном случае может быть много.
...
Рейтинг: 0 / 0
24.10.2011, 16:05
    #37495493
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CURSOR из файла
CawaSPb,

Файлы не больше чем 1000 строк.
Скорость при такой "ручной" обработке не важна.
2-3 раза в неделю.

Просто присылают эти файлы в отдел поддержки, а им с import'ом и temporary table кажется очень сложным, просят каждый раз помочь.
Думал помочь им более простым, не многошаговым решением штатными средствами.

А свои решения, так нужно ещо с админами договариваться, разрешения получать, и.т.д, свои сложности.

Видно не судьба.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / CURSOR из файла / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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