Копирование Firebird из одной базы данных с помощью isql

У меня есть 2 базы данных firebird

c:\db1.gdb
c:\db2.gdb

схемы обеих баз данных одинаковы, поэтому обе содержат таблицу

MyTable
-------
Id int
Name varchar(50)
...etc

Гарантируется, что данные в обеих базах данных различаются, однако мне нужно скопировать из db2.MyTable в db1.MyTable.

Требование состоит в том, что я делаю это с помощью инструмента firebird isql.

Как бы я сначала использовал isql

-Connect to both db's in one isql command window
-run a sql statement that would do a select all from one table in db2 and insert it into the same table in db1

Я использую firebird 1.5


person Eminem    schedule 23.08.2012    source источник


Ответы (2)


Это невозможно с FB 1.5. Вы можете сделать это в Firebird 2.5, используя новую функцию "выполнить оператор...внешний", которая позволяет получить доступ к другой базе данных Firebird изнутри триггеров, процедур и блоков кода.

person WarmBooter    schedule 23.08.2012
comment
После небольшого расследования я согласен с вашим ответом - person Eminem; 24.08.2012

Если вам действительно нужно сделать это, используя isql, вы можете написать оператор select, который производит insert операторов; запустите выбор в db2, сохраните результат в какой-либо файл, а затем выполните операторы в db1. Оператор select будет выглядеть примерно так

select 'insert into MyTable(id, name) values ('|| cast(id as varchar(10)) ||','''|| name ||''');' from MyTable;

Однако эту работу намного проще выполнить с помощью чего-то вроде Interbase DataPump от Clever Components.

person ain    schedule 23.08.2012
comment
Спасибо за указание на альтернативный метод достижения цели - person Eminem; 24.08.2012