powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Множественная вставка в базу...
7 сообщений из 7, страница 1 из 1
Множественная вставка в базу...
    #32491057
GoIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ституация:
НЕОБХОДИМОСТЬ ВСТАВКИ В НЕСКОЛЬКО ТАБЛИЦ ИЗ XML-файла
Исходные данные:
Есть XML-файл с некоторым объемом данных (28 тыс. записей суммарно в нескольких ветвях). Читаем формируем скрипт типа
insert into aaa(PK,b,c,d,e,f,r) values (1,2,3,4,5,6);
insert into aaa(PK,b,c,d,e,f,r) values (1,2,3,4,5,6);
insert into aaa(PK,b,c,d,e,f,r) values (1,2,3,4,5,6);
...
...
insert into aaa(PK,b,c,d,e,f,r) values (1,2,3,4,5,6);

Итого около тысячи "инсертов". Затем аналогично заполнять нужно еще 4 таблицы.

Проблема: каким образом возможно использовать компоненты IBExpress или другие, что бы решить сей вопрос? По умолчанию известно, что компоненты типа IBSQL или IBQuery позволяют работать ТОЛЬКО с одной камондой SQL. Но в данной ситуацией требуется обработка весьма длинного скрипта(повторюсь 28 тыс.записей) + такой файл приходит 2 раза в месяц и его нужно нормально положить в базу.

Заранее спасибо.
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491116
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> По умолчанию известно, что компоненты типа IBSQL или IBQuery позволяют работать ТОЛЬКО с одной камондой SQL ???

ibsql -i <файл_с_коммандами> -o <файл_протокола>
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491134
GoIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> По умолчанию известно, что компоненты типа IBSQL или IBQuery позволяют работать ТОЛЬКО с одной камондой SQL ???

спасибо за рекомендацию - поробую.
А насчет одной команды проверено. Только 1 инсерт, а далее просто говоритиься о том, что "токен неизвестен - INSERT." В принципе логично. Ошибся я только в корректоности названия не SQL, но DSQL - в нотации борланда.
И еще по данному совету требуется запускать ibsql отдельно (ну или из софта - неважно). А можно ли пользуясь стандартными компонентами эту задачу решить. Дело в том, что работу по закачке XML-файла в БД ,будет производить пользователь. И не хотелось бы, что бы он видел загрузку другой программы, в лучшем случае ProgressBar.
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491278
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBScript в IBX, но я не пробовал, хотя должно работать...
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491323
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так !!! Берем TIBSQL и пишем следущее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
IBSQL.SQL.Add('insert into aaa(PK,b,c,d,e,f,r) values (:P1,:P2,:P3,:P4,:P5,:P6)')

// Циклим по кол-ву строк
begin
 IBSQL.ParamByName('P1').AsInteger :=  1 ;
 IBSQL.ParamByName('P2').AsInteger :=  2 ;
 IBSQL.ParamByName('P3').AsInteger :=  3 ;
 IBSQL.ParamByName('P4').AsInteger :=  4 ;
 IBSQL.ParamByName('P5').AsInteger :=  5 ;
 IBSQL.ParamByName('P6').AsInteger :=  6 ;
 IBSQL.ExecQuery;
end;

IBSQL.Transaction.Commit; // Сохраняем . Но лучше сохранять по  5000  записей


И все работает за считанные секунды !

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491327
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу ISQL...

делаем 2 файла

1-й x.bat; с содержимым:

SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey
"C:\Program Files\firebird\bin\isql" -i x.sql -o x.log

2-й x.sql

connect "c:\tst\tst.gdb";
create table tst(tst numeric(9,9));
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
insert into tst values (1.1);
commit;
select * from tst;
exit;

Содержимое x.log:


TST
============

1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
1.100000000
...
Рейтинг: 0 / 0
Множественная вставка в базу...
    #32491343
GoIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы - поробую все - выбрать то нужно оптимальный:-)
Пока больше понравилась идея с "батником"-проще отследить ошибку на большом объеме. По результатам будет видно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Множественная вставка в базу...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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