IBE Block

Crayzer
Дата: 21.06.2012 19:13:52
Доброго всем времени суток.
Есть вопрос по поводу извлечения метаданных при помощи "execute ibeblock".
Необходимо извлесь данные из таблиц, для последующего их переноса в другую БД (на MS SQL).

  try
    ibec_ExtractMetadata(DB, 'ALLDATA',
                             'DescriptionsAsUpdate;
                              DateFormat=YYYY-MM-DD;
                              Domains=NONE;
                              Tables=NONE;
                              Views=NONE;
                              Procedures=NONE;
                              Triggers=NONE;
                              Generators=NONE;
                              Exceptions=NONE;
                              UDFs=NONE;
                              Roles=NONE;
                              DataTables=TABLENAME1, TABLENAME2, TABLENAME3', 
                              cbb);




Возможно ли выдирать в такой конструкции не все поля таблицы, а только необходимые?

Понятно, что через обычный экспорт данных из таблицы это возможно, сделав предварительно селект. Но тут хотелось бы все это автоматизировать...

Может это возможно сделать еще каким-то способом?
IBExpert
Дата: 21.06.2012 19:34:40
Crayzer
Может это возможно сделать еще каким-то способом?


http://ibexpert.net/ibe/index.php?n=Doc.ScriptExecutive#Output
Crayzer
Дата: 22.06.2012 12:58:06
Спасибо. Вообще кул. Что-то я позабыл совсем про OUTPUT...
Crayzer
Дата: 22.06.2012 15:22:37
Появился еще небольшой вопрос..
Все извлекается без проблем, пока дело не доходит до таблиц с BLOB - ами.
Первую таблицу с BLOB - ом он экспортит на ура и создает рядышком *.lob файл с нужными полями, но при попытке экспортнуть последующую таблицу - вылетает или выкидывает ошибки типа:

Error Message:
----------------------------------------
Invalid pointer operation


Причем, если выдирать эти таблицы по отдельности, то все ок и никаких ошибок нету.
IBExpert
Дата: 22.06.2012 15:46:49
Crayzer,

Пиши мне на мыло или в конфу. Вместе с примером для воспроизведения на системных таблицах.
Dr_Wolf
Дата: 01.11.2012 13:31:39
IBExpert,

У меня такая же ошибка... падает если подрят выгружать несколько таблиц с блобами через конструкцию output <filename> as update or insert into <table name>
Dr_Wolf
Дата: 01.11.2012 13:42:32
воспроизводится

output d:\test.sql as update or insert into RDB$TRIGGERS;
select RDB$TRIGGER_NAME, RDB$RELATION_NAME, RDB$TRIGGER_SEQUENCE,
RDB$TRIGGER_TYPE, RDB$TRIGGER_SOURCE, RDB$TRIGGER_BLR, RDB$DESCRIPTION,
RDB$TRIGGER_INACTIVE, RDB$SYSTEM_FLAG, RDB$FLAGS, RDB$VALID_BLR,
RDB$DEBUG_INFO, RDB$FIELD_NAME
from RDB$TRIGGERS;

output d:\test.sql as update or insert into MON$STATEMENTS;
select MON$STATEMENT_ID, MON$ATTACHMENT_ID, MON$TRANSACTION_ID,
MON$STATE, MON$TIMESTAMP, MON$SQL_TEXT, MON$STAT_ID
from MON$STATEMENTS;

commit;
IBExpert
Дата: 01.11.2012 14:23:39
Dr_Wolf,

Да, воспроизводится. Спасибо, разберусь.
IBExpert
Дата: 01.11.2012 15:06:28
Ошибку нашел и исправил.
Но, вообще, OUTPUT надо "закрывать":

OUTPUT ...;
SELECT ...;
OUTPUT;

Если делать именно так, то ошибки и сейчас не будет.