Мельница данных  (16.06.2024)
Механизмы связи между БД на сервере

Firebird
Будут формироваться и выполняться блоки вида
01execute block as
02  declare "ID" BIGINT;
03  declare "P0" SMALLINT;
04  .....
05begin
06  for execute statement 'select "ID", .... from "...."'
07    on external data source '....' as user '...' password '....'
08    into :"ID",:"P0",..... do
09      insert into "...."("ID",....)
10      values (:"ID",:"P0",.....);
11end
    

Oracle
Механизм может быть использован, если пользователь-владелец схемы имеет право CREATE DATABASE LINK, и оператор create database link будет выполнен без ошибок. При этом будет создан link с именем "SYS$PUMP". После завершения процедуры перекачки данных link будет удален. Таким образом, можно в целях безопасности выдавать право CREATE DATABASE LINK владельцу схемы данных только на время перекачки данных. При этом генерируются и выполняются операторы вида
1INSERT /*+ APPEND */ INTO "..."("ID", ....)
2SELECT "ID", ....
3  FROM "..."@"SYS$PUMP"
4...
    

Postgres
Механизм может быть использован, если в БД установлено стандартное расширение "dblink", и оператор select public.dblink_connect('user=... password=.......') будет выполнен без ошибок. При этом генерируются и выполняются операторы вида
01do $$
02declare
03  cnt int;
04begin
05  perform public.dblink_connect('user=... password=... ....');
06  perform public.dblink_open('SYS$....', 'select T."ID", ..... from "...." T');
07  loop
08    insert into "...." ("ID", .....)
09    select T."ID" from public.dblink_fetch('SYS$.....', 1000000)
10    as T("ID" bigint, .....);
11    get diagnostics cnt = row_count;
12    exit when cnt = 0;
13  end loop;
14end; $$
    

Механизм может быть принудительно заблокирован ключем /NODBLINK.