powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить данные из другой БД в запросе
25 сообщений из 54, страница 2 из 3
Получить данные из другой БД в запросе
    #39602528
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Я как-то тестировал. Чиcтый insert из памяти в локальную базу 75000 записей (не очень широкая запись и полное отсутствие индексов) идёт где-то 5сек.
Сейчас проверил в Эксперте, редакторе скриптов. Реальная таблица, запись тоже неширокая, но индексы присутствуют. 15000 за 8сек. Но это не совсем показатель, наверно, Эксперт время тратит на экранную поддержку, может ещё на что.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39602537
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,
тут ситуация другая. идет не просто импорт, а по каждой импортируемой записи, по app_num, открывается селект из другой БД. Думаю что Симонов Д. прав и скорость 1000 записей в секунду - это нормально.
А то что мне сейчас надо импортировать 3500 файлов общим объемом 1,6Гб (записей будет где-то 3-4млн) - это разово и даже пару часиков можно подождать.

Всем спасибо.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39602538
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Удалось чуть-чуть ускорить.
При импорте проверяю если app_num следующей записи одинаковый - селект не закрываю и тем самым чуть-чуть экономлю время. на 130тыс. записей выиграл еще 13 секунд.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39602566
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,

а зачем тебе для SELECT запроса автономная транзакция?
Уже не помню. Это скрипт из мониторинга, по запросу это контролировалась работа ibreplicator.
p.s. для тс мой пример наверно не очень удачный. Как минимум надо убрать лишнюю транзакцию. Если это раз в месяц,то лучше что-нибудь лучше придумать. Например ,ibscript выгрузить в файл и загрузить в базу. А так ты на каждую строку коннект к базе делаешь + подготовка запроса и т.п.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39602636
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Обрати внимание на мой пример. Можно сделать одним запросом к БД
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642517
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу продолжить тему, но с конкретным примером:
Чтобы не плодить темы, спрошу тут:
Имеем 2 файла БД: Import.fdb, Export.fdb
имеем таблицу в Import.fdb:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE EX_UDIC_ADDRESS (
    CODE    DM_CODE /* DM_CODE = SMALLINT DEFAULT 0 NOT NULL CHECK (value >=0) */,
    INDX    VARCHAR(6),
    ID_OBL  DM_CODE /* DM_CODE = SMALLINT DEFAULT 0 NOT NULL CHECK (value >=0) */,
    ID_RAJ  DM_CODE /* DM_CODE = SMALLINT DEFAULT 0 NOT NULL CHECK (value >=0) */,
    PLACE   DM_CODE /* DM_CODE = SMALLINT DEFAULT 0 NOT NULL CHECK (value >=0) */,
    NAME    DM_NAMESHORT /* DM_NAMESHORT = VARCHAR(50) */,
    ACTIV   DM_BOOL default 1 /* DM_BOOL = SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (0,1)) */
);



В Export.fdb эта таблица точно такая же, но имя без "EX_":UDIC_ADDRESS

Подскажите какой запрос нужно выполнить во время подключения к Export.fdb чтобы перетянуть все данные из одной БД в другую.

Что-то типа:
Код: sql
1.
2.
3.
insert into UDIC_ADDRESS (CODE, INDX, ID_OBL, ID_RAJ, PLACE, NAME, ACTIV)
select CODE, INDX, ID_OBL, ID_RAJ, PLACE, NAME, ACTIV
from EX_UDIC_ADDRESS
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642520
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

читай про EXECUTE STATEMENT ON EXTERNAL
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642522
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.05.2018 10:59, akrush пишет:
> Подскажите какой запрос нужно выполнить

вгде, б#я?!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642536
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
> Подскажите какой запрос нужно выполнить

вгде, б#я?!


Очевидно "в там"...
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642538
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
например в IBExpert - редактор скриптов
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642544
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Код: sql
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.
set names WIN1251;
set CLIENTLIB 'fbclient.dll';
connect 'localhost:Export.fdb.fdb' user 'SYSDBA' password 'masterkey';
execute block
as
declare variable CODE integer;
declare variable INDX integer;
declare variable ID_OBL integer;
declare variable ID_RAJ integer;
declare variable PLACE integer;
declare variable NAME integer;
declare variable ACTIV integer;

begin
  for execute statement('select CODE, INDX, ID_OBL, ID_RAJ, PLACE, NAME, ACTIV from EX_UDIC_ADDRESS')
          on external 'localhost:Import.fdb'
          with autonomous transaction
          as user 'SYSDBA' password 'masterkey'
          into :CODE, :INDX, :ID_OBL, :ID_RAJ, :PLACE, :NAME, :ACTIV

  do
  begin
    insert into UDIC_ADDRESS (CODE, INDX, ID_OBL, ID_RAJ, PLACE, NAME, ACTIV)
    values (:CODE, :INDX, :ID_OBL, :ID_RAJ, :PLACE, :NAME, :ACTIV);
  end
end;
commit;


что-то типа такого
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642556
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.05.2018 11:37, akrush пишет:
> например в IBExpert - редактор скриптов

http://www.ibexpert.net/ibe/index.php?n=Doc.SQLEditor?from=Doc.56#MovingData

зы: вбейте это уже в FAQ, что ли...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642700
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
Но это ж IBExpert, дай ему здоровья, постарался? Или так можно делать в самом Firebird?
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642705
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.05.2018 15:02, bsa1959 пишет:
> Но это ж IBExpert, дай ему здоровья, постарался?
> Или так можно делать в самом Firebird?

вот поэтому, пациента прежде чем резать нужно допросить: что, где и когда он хочет получить.
средствами FB можно с 2.5
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642709
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL-ем?
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642710
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.05.2018 15:13, bsa1959 пишет:
> SQL-ем?

[FOR] EXECUTE STATEMENT <query_text> [(<input_parameters>)]
[ON EXTERNAL [DATA SOURCE]
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642713
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa1959,
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642718
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В IBExpert -е достаточно написать "SQL", а в Firebird - это процедура(2.5). Разница есть?
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642719
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.05.2018 15:21, bsa1959 пишет:
> а в Firebird - это процедура(2.5)

нет
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642722
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На нет - и суда нет.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642723
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa1959SQL-ем?
Одиночным SQL-запросом, если ты об этом, все равно не получится, только скриптом типа как тебе выше расписали. Ибо по настоящему гетерогенных запросов FB пока не позволяет.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642729
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert сделал то что нужно многим...
Аналог Oracle

Create table <name> as select ....

WITH data

И у него все работает.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642731
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WITH Data - опция.
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642744
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ибо по настоящему гетерогенных запросов FB пока не позволяет.
Лет надцать поработал с Oracle по поводу их распределенных транзакций. Устал. Одно правят - другое падает.
Под гетерогенными запросами FB, Вы это понимали?
...
Рейтинг: 0 / 0
Получить данные из другой БД в запросе
    #39642758
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa1959,

Под гетерогенными я понимаю возможность смешивать в одном запросе таблицы разных БД. Аналог института Local SQL в бормандовской BDE, если кто помнит. Причем там можно было смешивать в одном запросе таблицы не только из разных БД, но и даже разных СУБД.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить данные из другой БД в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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