powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Можно ли в процедуре сделать выгрузку в файл?
8 сообщений из 8, страница 1 из 1
Можно ли в процедуре сделать выгрузку в файл?
    #36887627
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, можно ли непосредственно в процедуре сделать выгрузку в файл, в текстовый или в Excel?
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36887648
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия DB2 - 9.7
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36887882
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE DynSQL varchar( 10000 );
DECLARE FileName varchar( 100 );
declare Day_ varchar( 2 );

SET Day_ = (select day(current_date) from sysibm.sysdummy1);
SET FileName = 'тут путь к директории на сервере'
||Day_||'_результат.txt';
SET DynSQL = 'export to "'||FILENAME||'" of del select * from tablename';
EXECUTE IMMEDIATE DynSQL;

получаю ошибку :

Код: plaintext
1.
ERROR [ 42601 ] [IBM][DB2/NT64] SQL0104N  An unexpected token "export to" was found following "BEGIN-OF-STATEMENT".  Expected tokens may include:  "<create_view>".  SQLSTATE= 42601 

Если просто запускаю запрос

Код: plaintext
export to "Тут путь и имя файла на сервере" of del select * from tablename;

Все выполняется нормально. Как сделать, чтобы и в процедуре это срабатывало?
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36887946
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите функцию ADMIN_CMD
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36888402
Lkhiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
'export to "' || некорректная расстановка кавычек.
DB2 не понимает где кончается литерал и начинается имя колонки....
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36888674
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
connect to MYDB user db2admin using ****@
set schema MYSCHEMAs@
set path MYSCHEMA,current path
@

create table myt (id int not null, ts timestamp default current timestamp, primary key (id))
@
insert into myt values ( 1 ),( 2 ),( 3 )
@


create or replace procedure test(
    in table_name varchar( 30 ),
    in file_path varchar( 100 ),
    out err_msg varchar( 512 )
)
begin
    declare exit handler for sqlexception
    begin
        get diagnostics exception  1  err_msg=message_text;
    end;    

    call admin_cmd('export to '|| file_path ||' of ixf select * from '||table_name);
    set err_msg='Succesfully exported';
end
@

call test('MYT','E:\Sources\9.0.1\db2\main\mrm\database\stored_procs\db2\myt.ixf',?)
@


quit@

...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36888716
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create or replace procedure test(
    in table_name varchar( 30 ),
    in file_path varchar( 100 ),
    out err_msg varchar( 512 )
)
begin
    declare sql_stmt varchar( 1024 );
    declare exit handler for sqlexception
    begin
        get diagnostics exception  1  err_msg=message_text;
    end;    

    set sql_stmt='call admin_cmd(''export to "'|| file_path ||'-2.ixf" of ixf select * from '||table_name||''' )';
    set err_msg=sql_stmt;
    execute immediate sql_stmt;
    set err_msg='Succesfully exported';
end
@

call test('MYT','E:\Sources\9.0.1\db2\main\mrm\database\stored_procs\db2\myt.ixf',?)
@
...
Рейтинг: 0 / 0
Можно ли в процедуре сделать выгрузку в файл?
    #36889773
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SET Day_ = (select day (current_date) from sysibm.sysdummy1);
SET Month_ = (select month (current_date) from sysibm.sysdummy1);
SET Year_ = (select year (current_date) from sysibm.sysdummy1);
SET Hour_ = (select hour (current_time) from sysibm.sysdummy1);
SET Minute_ = (select minute (current_time) from sysibm.sysdummy1);
SET Second_ = (select second (current_time) from sysibm.sysdummy1);

SET FileName = '\\имя компьютера\путь к директории\A'||Day_||'_'||Month_||'_'||Year_||'_'||Hour_||'_'||Minute_||'_'||Second_||'.txt';

SET DynSQL = 'CALL SYSPROC.ADMIN_CMD (''export to '||FILENAME||' of del select * from '||D_TABLE||' where field1 is null'')';

EXECUTE IMMEDIATE DynSQL;

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


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