Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Страницы: <<123
Страница: 3 из 3
Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 14, October, 2013 20:41

Задача:
1. экспортировать из внешнего источника некоторые данные
2. конвертировать в формат для импорта в ирбис
3. импортировать записи в БД (IBIS) с вариантами:
3.1 только новые
3.2 с заменой данных/добавлением новых данных

п.1 и п.2 сделал.
п.3 никак не получается.
Создал специальный словарь по новому полю 4010, в котором хранится уникальный id записей:
4100 0 MHL,"UID="v4010

создал pft:
"UID="v4010

Делаю импорт со слиянием. Добавляются и дублетные записи, при этом сразу логически удаляются.

создавал fst:
1005 0 &uf('+1W1005#'),&uf('+1W1005#',if val(&uf('J,',"UID="v4010))>0 then 'TRUE' fi),
4010 0 if a(g1005) then (v4010/) fi
920 0 if a(g1005) then (v920/) fi
951 0 if a(g1005) then (v951/) fi
900 0 if a(g1005) then (v900/) fi
.... др. поля

При импорте "через fst": в существующих записях повторялись неповторяющиеся поля, при том в одном повторении данные в подполях дублировались:
#200: ^AИностранный языкИностранный язык
#200: ^AИностранный язык

Помогите, пожалуйста, разобраться с данным вопросом? Что я делаю не так?

Ирбис 10.1 64

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)

Re: Режим слияния записей
Пользователь: Alio (IP-адрес скрыт)
Дата: 15, October, 2013 06:51

Покажите, как Вы задавали формат слияния при импорте...

Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 21, October, 2013 20:42

Alio написал(а):
-------------------------------------------------------
> Покажите, как Вы задавали формат слияния при
> импорте...
прикрепил файлы:
mergepft.mnu
umkd_load.fst
umkd_update.pft
umkd_2013-10-02-3it.txt - пример загружаемых записей.

В каталогизаторе выбираюСервис/Импорт/ ставлю галку "Слияние", выбираю "формат ключа" или umkd_load или umkd_update. Текстовый, utf-8.

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)

Вложения: IBIS.ZIP (715 bytes)   umkd_2013-10-02-3it.txt (21.7KB)  
Re: Режим слияния записей
Пользователь: Alio (IP-адрес скрыт)
Дата: 22, October, 2013 07:42

У Вас несовместимость фоорматных конструкций.
Нельзя использовать конструкцию gN для "старых" глобальных переменных
&uf('+1..)
Используйте конструкцию &uf('+7..) для глобальных переменных

Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 06, November, 2013 20:21

Alio написал(а):
-------------------------------------------------------
> У Вас несовместимость фоорматных конструкций.
> Нельзя использовать конструкцию gN для "старых"
> глобальных переменных
> &uf('+1..)
> Используйте конструкцию &uf('+7..) для глобальных
> переменных

Подправил - всё также - загружаются и удаляются из-за дублетности.

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)

Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 06, November, 2013 20:53

Задача минимум у меня - загрузка только новых записей (проверка по "UID="v4010). Даже она не получается :(

Я так понял для определения - существует уже или нет подобная запись в базе отвечает формат pft (например load.pft). В нём я прописываю "UID="v4010. Как мне сделать так, чтобы при наличию подобной записи в базе, он ничего не предпринимал и переходил к следующей импортируемой записи? Сейчас он даже при отсутствии fst (load.fst) - начинает дублировать данные в прошлых записях.

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)



Редактировано 2 раз. Последний раз 06.11.2013 21:24 пользователем iLq.

Re: Режим слияния записей
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, November, 2013 07:16

iLq написал(а):
-------------------------------------------------------
> Задача минимум у меня - загрузка только новых
> записей (проверка по "UID="v4010). Даже она не
> получается :(
>
> Я так понял для определения - существует уже или
> нет подобная запись в базе отвечает формат pft
> (например load.pft). В нём я прописываю
> "UID="v4010. Как мне сделать так, чтобы при
> наличию подобной записи в базе, он ничего не
> предпринимал и переходил к следующей импортируемой
> записи?
Если так, то при чем тут режим слияния? Делайте обычный импорт по FST, в которой - в каждой строчке проверяйте наличие ссылки по ключу "UID="v4010 и если такая есть, ничего не формируйте - в результате получится пустая запись, которая в БД не попадет.

Сейчас он даже при отсутствии fst
> (load.fst) - начинает дублировать данные в прошлых
> записях.

Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 07, November, 2013 19:41

Получилось. То есть fst указывается в ТВП переформатирования. А pft - в слиянии. Я правильно понял?

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)

Re: Режим слияния записей
Пользователь: iLq (IP-адрес скрыт)
Дата: 07, November, 2013 20:15

Также заметил, что при пакетном задании, пустые записи всё таки появляются. И если включен ФЛК, то они сразу же логически удаляются. Этого можно как-то избежать?
ibf-файл такого рода использую.

ImportDB 1,umkd_load,1,2,workdir\umkd-import.txt

При импорте из Каталогизатора и указания того же ТВП(umkd_load) и того же импортируемого файла umkd-import.txt - пустых записей не появляется.

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)

Re: Режим слияния записей
Пользователь: Rin_Asougi (IP-адрес скрыт)
Дата: 01, September, 2014 16:38

Добрый день!
Подскажите, пожалуйста, как исправить стандартный impsvk, что бы при слиянии не дописывались поля 210 и 215.

Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 02, September, 2014 11:15

В формате impsvk.fst удалите строки (в любом редакторе):
210 0 if &unifor('+1R1005')<>'' then else (v210/) fi
215 0 if &unifor('+1R1005')<>'' then else (v215/) fi

Re: Режим слияния записей
Пользователь: Rin_Asougi (IP-адрес скрыт)
Дата: 02, September, 2014 13:09

Дунаевская написал(а):
-------------------------------------------------------
> В формате impsvk.fst удалите строки (в любом
> редакторе):
> 210 0 if &unifor('+1R1005')<>'' then else (v210/)
> fi
> 215 0 if &unifor('+1R1005')<>'' then else (v215/)
> fi

Убрала. Но после слияния они все равно дописались вторым повторением (см. скриншот).

Вложения: 1.jpg (429.1KB)   impsvk.fst (8.7KB)  
Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 02, September, 2014 13:34

Пришлите обе записи (из БД и из импорта)

Re: Режим слияния записей
Пользователь: Rin_Asougi (IP-адрес скрыт)
Дата: 02, September, 2014 14:08

txt + utf8:
1 - запись из БД
2 - запись из импорта

Вложения: 1.txt (2.1KB)   2.TXT (182.3KB)  
Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 03, September, 2014 15:39

Замените форматы

Вложения: impsvk.fst (7.5KB)   impsvk.pft (3.4KB)  
Re: Режим слияния записей
Пользователь: Rin_Asougi (IP-адрес скрыт)
Дата: 04, September, 2014 12:01

Светлана Михайловна, расскажите, пожалуйста, подробнее, как Вы импортировали.
Я заменила форматы, но ничего не изменилось. Потом я убрала те 2 строки, о которых Вы писали, из формата impsvk.fst и получила тот же результат.
Пробовала делать импорт со слиянием в версиях 2012 и 2013. Через АРМ Каталогизатор все также поля 210 и 215 дописываются, через АРМ Администратор запись встает логически удаленной.

Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 04, September, 2014 21:52

Посмотите вложение

Вложения: Выполнение и протокол выполнения.docx (416.1KB)  
Re: Режим слияния записей
Пользователь: Rin_Asougi (IP-адрес скрыт)
Дата: 05, September, 2014 10:52

Большое спасибо! Все получилось!

Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 24, May, 2015 16:47

Здравствуйте. Я работаю в ИРБИС64 и Вы очень помогли нам организовать импорт со слиянием. У нас слияние записей происходит по шифру (903 полю) и проблема возникла при импорте записей другой библиотеки (отличие в 903). это записи описания журнала у которых отличный от нашего шифр. если у нас такой журнал не зарегистрирован -(мы делаем импорт-слияние-глобальная imp903.gbl)-проблем нет. если журнал зарегистрировали- надо в импортируемой записи заменить шифры (глобальной imp903.gbl) --потом слияние по 903 полю. Импорт со слиянием-формат ключа я делаю по IMPNJ_SH.pft, импорт со слиянием-глобальная через imp903.gbl. поле ТВП переформатирования не использую. подскажите ,пожалуйста ,как нужно сделать импорт записей,заменив им шифр, и потом организовать слияние по шифру??



Редактировано 1 раз. Последний раз 24.05.2015 16:58 пользователем Tamara.

Вложения: imp903.gbl (602 bytes)   IMPNJ_SH.PFT (8 bytes)  
Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 26, May, 2015 08:47

Извините, пожалуйста..Только когда переложила всю замену шифров на ТВП переформатирования получила результат. Раньше думала этим занимается импорт с глобальной.

Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 17, June, 2015 10:47

Подскажите, пожалуйста, как организовать в режиме импорта со слиянием условие для полной замены конкретного поля(у нас 922). В нашей ситуации мы получаем с филиалов записи, которые часто приходится корректировать. после отсылки их обратно и "вливании" происходит дописывание в содержание откоректированных статей. При постоянном "курсировании" подобных записей поле 922 может дописываться "до бесконечности". Выход- для филиалов (при импорте со слиянием) при наличии поля 922 в импортируемой записи оно должно заменять(а не дописывать) поле содержание "старой" записи. Помогите, пожалуйста это сделать..

Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 17, June, 2015 10:57

Используйте импорт с глобальной

Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 18, June, 2015 11:49

Поясните, пожалуйста. Я пользуюсь импортом с глобальной, когда надо изменить вливаемую запись.а здесь я должна перед слиянием удалить поле у записи в которую вливаю. где я ошибаюсь?

Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 18, June, 2015 12:52

Да, правильно, логика такая (с учетом того, что импортируемая запись пишется временно в БД) - Добавить поле 1001 с глоб. переменной, в которую записать поля 922, Корректировать запись БД - удалить в ней поля 922, а потом добавить поле 922 из глоб. переменной

ADD
1001

&uf('+7W922#'(v922/))

CORREC
'*'

<термин поиска>
DEL
922


ADD
922

(g922/)

END




DELR

Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 22, June, 2015 19:56

Долго разбиралась по талмуду как расписывать CORREC и аналогично примеру написала
0
ADD
1001
XXXXXXXXXXXXXXXXXXX
&uf('+7W922#'(v922/))
XXXXXXXXXXXXXXXXXXX
CORREC
'*'
v922/
if p(v922) then "I="v903 fi
XXXXXXXXXXXXXXXXXXX
DEL
922

XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
ADD
922
XXXXXXXXXXXXXXXXXXX
(g922/)
XXXXXXXXXXXXXXXXXXX
END
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
DELR
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
судя по результату понятие <термин поиска>- не поняла.

Подскажите, пожалуйста где ошиблась..



Редактировано 1 раз. Последний раз 23.06.2015 08:51 пользователем Tamara.

Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 23, June, 2015 09:34

Строка v922/ должна быть пустой - в принципе она предназначена для формулировки поля 1001, которое здесь определено ранее
<термин поиска>- поняли правильно

Re: Режим слияния записей
Пользователь: Tamara (IP-адрес скрыт)
Дата: 27, June, 2015 11:22

Спасибо большое Светлана Михайловна, с Вашей помощью всё заработало.

Re: Режим слияния записей
Пользователь: квс (IP-адрес скрыт)
Дата: 03, August, 2015 11:41

Светлана Михайловна
Прошу помощь в составлении ТВП (import_910.fst)
чтобы составить задание на корректировку каталога книг

в базе каталога необходимо заменить повторение поля 910
из подготоленного списка (выгрузка txt и з другой базы)

IRBIS64 2014.1 D4

Спасибо
Ковалёв



Редактировано 1 раз. Последний раз 03.08.2015 11:57 пользователем квс.

Вложения: Каталог пример записей.TXT (8.3KB)   импорт.TXT (596 bytes)   Прошу.doc (27.5KB)  
Re: Режим слияния записей
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 03, August, 2015 16:22

Задача не сложная "Импорт-слияние-глобальная"
Логика выполнения такая - импортируемая запись пишется в БД, по ней корректируется запись БД каталога, импортируемая запись удаляется.

Создаем задание на глоб.кор-ру (термин поиска - инв.№, данные передаются через поле 1001, в которое помещаем поле 910 импортируемой записи - см. оператор CORREC)


CORREC '*' v910 "IN="v910^b

REP 910 F (if p(v910) then if v910^b=&uf('Av1001^b#1') and v910^c='17000101' then &uf('Av1001#1') else v910 fi fi/)

DEL 1001 1

END

DELR

Страницы: <<123
Страница: 3 из 3


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.