powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Экспорт и Импорт из Cache части данных
25 сообщений из 31, страница 1 из 2
Экспорт и Импорт из Cache части данных
    #36404523
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане! Имеется следующая проблема:
Имеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный?
Версия Cache - 5.0.21 (Build 6408U).
Пробовал воспользоваться экспортом таблицы в SQL-Manager, но он экспортирует А) всю таблицу б) Не всегда может импортировать обратно. Сейчас пытаюсь экспортировать в XML, однако класс(Таблица?) имеет достаточно сложную структуру, поэтому пока ничего не выходит.
Есть ли ещё идеи?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36404561
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusКакой способ можете наиболее простой и наименее затратный?
Думается запись в произвольный глобал, его экспорт/импорт и последующая обработка будет таковым.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36404598
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вы выгружаете в XML ?
вам нужно выгрузить одну таблицу? нет никаких связей ?

если это только одна таблица, то в чем ее сложность ?

в любом случае класс можно дополнительно отнаследовать от %XML.Adaptor
и тогда можно экспортировать/импортировать без проблем
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36404631
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorбез проблем
Ты версию их Кащея видел?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36404640
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видел, у меня такая же
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36404779
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusИмеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный?
Версия Cache - 5.0.21 (Build 6408U).
Запишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. Это наиболее простой и наименее затратный.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405303
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorкак вы выгружаете в XML ?
Пытаюсь, как показано в примерах работы с XML.
DAiMor
вам нужно выгрузить одну таблицу? нет никаких связей ?
если это только одна таблица, то в чем ее сложность ?

Таблица одна, но сложная: Имеются связи с другими таблицами, помимо этого связь таблицы с собой, встраиваемый класс, несколько коллекций (массив, список и characterstream)

DAiMor
в любом случае класс можно дополнительно отнаследовать от %XML.Adaptor
и тогда можно экспортировать/импортировать без проблем

Простые свойства экспортируются без проблем, проблема как раз в сложных. Сейчас попробую отнаследовать абсолютно все классы, которые могут быть завязаны с необходимым от %XML.Adaptor, однако что делать с коллекциями?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405322
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яЗапишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Это наиболее простой и наименее затратный.
К сожалению, глобалы для меня пока темный лес. Можно ли часть данных из таблицы экспортировать? Не пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе?
ну я Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. ммм... совсем не понял... Можно еще раз, только более развернуто?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405375
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusсовсем не понял... Можно еще раз, только более развернуто?
Если глобал сохранён в формате Cache Block , то перед импортом нужно удалить глобал с таким же именем. В противном случае получите "кашу" из старых и новых данных.

Пример.
- Вы экспортировали глобал ^tmpMy в формате Cache Block
- Перед его импортированием в некую облать, проверьте есть ли там такой глобал (^tmpMy)
- Если есть удалите его в Проводнике Каше или командой
Код: plaintext
<ваша_область>>k ^tmpMy
- После этого импортируйте глобал ^tmpMy из файла.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405397
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusК сожалению, глобалы для меня пока темный лес.
Ничего сложного. Это обычные массивы, только с префиксом ^ (крышка/кепка)...

Пример.

Код: plaintext
1.
2.
s ^tmpMy= 1 
s ^tmpMy( 10 )="Test"
s ^tmpMy("Test")=$h

Все что вам нужно:
- Пройтись по вашей "сложной таблице"
- Записать данные её строк в глобал так, что бы вы потом сами же поняли откуда их брать и куда писать
- Экспортировать глобал
- Импортировать куда нужно
- Обработать данные глобала так, что бы они попали в вашу таблицу без потери данных.

MasteRusМожно ли часть данных из таблицы экспортировать?
Да, можно.

MasteRusНе пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе?
Это смотря как вы все сделаете...
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405407
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusну яЗапишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Это наиболее простой и наименее затратный.
К сожалению, глобалы для меня пока темный лес. Можно ли часть данных из таблицы экспортировать? Не пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе?
ну я Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. ммм... совсем не понял... Можно еще раз, только более развернуто?
Ну подучите матчасть, лес станет посветлее. Какую часть прописать в глобал для переноса - это вы самостоятельно решаете, часть там будет или не часть и что именно и в каком виде решаете самостоятельно. Поскольку это отдельный глобал, то как может пострадать информация в других, не совсем понятно. Перед записью в глобал информации которую будете передавать убейте его. Есть такая команда kill. Перед импортом тоже. Блочный экспорт-импорт это самый подходящий вариант для переноса большого объема данных.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36405426
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут проблема скорее в том, как вы будете собирать данные раскиданные по объектам в один глобал, чтобы ничего не забыть. Вторая проблема как будете вставлять данные обратно в объекты. Будет ли это добавление как новых объектов, или перезапись которые уже и так есть, и как согласовывать иды объектов и связи, и будет ли перенос сведений об удалении объектов. Основная проблема не столько в переносе самих данных, сколько в организации собственно такой репликации с точки зрения вашей прикладной системы.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36406056
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasteRusЗдравствуйте, уважаемые форумчане! Имеется следующая проблема:
Имеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный?
Версия Cache - 5.0.21 (Build 6408U).
Пробовал воспользоваться экспортом таблицы в SQL-Manager, но он экспортирует А) всю таблицу б) Не всегда может импортировать обратно. Сейчас пытаюсь экспортировать в XML, однако класс(Таблица?) имеет достаточно сложную структуру, поэтому пока ничего не выходит.
Есть ли ещё идеи?
Если нужно просто продублировать записи (1 в 1 или с небольшой модификацией исходных данных), то может получится обойтись и одним SQL-запросом:
Код: plaintext
1.
INSERT INTO <имя_таблицы> (<список_полей>) SELECT <список_полей> FROM <имя_таблицы> WHERE <условия_отбора_записей>
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407032
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, кто пытается помочь, сейчас я буду задавать глупые вопросы, получать умные ответы и после этого много-много думать и пробовать.
Думаю, чтобы ситуация была понятна, надо объяснить исходную задачу: После обновления системы повредилась часть информации, однако это вскрылось не сразу, поэтому необходимо восстановить данные с бэкапа, который был перед обновлением, провести правильно обновление и добавить ту информацию, которая добавлена в систему после обновления.
Сейчас мне видятся способы решения проблемы
1. Экспортировать в таблицу через SQL-запрос, Экспортировать таблицу, восстановить бэкап, импортировать таблицу и из таблицы добавить данные
Проблема : Не могу экспортировать все данные, проблема возникает с полем типа collection = array
Пытаюсь сделать тоже самое объектным методом, но не получается пока, ошибка аналогична.

2. Экспортировать в XML, восстановить бэкап, импортировать из XML
Проблемы : неправильно то же самое поле, плюс некоторые другие, в частности, встроенные классы (Serial), хотя они тоже наследуют %XML.Adaptor. Как правильно обрабатывать коллекции?

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

4. Экспортировать в таблицу через SQL-запрос, Экспортировать глобал, потом обратно импортировать
Проблемы : См проблему п1, + ни разу не пробовал экспорт/импорт глобалов.

5. Подключиться с другого Cache-сервера с чистой базой, Экспортировать туда нужную информацию, восстановить бэкап, подключиться с основного сервера к тому, куда экспортировали и скопировать информацию обратно.
Проблемы : При попытке подсоединиться к источнику данных запрашивается логин и пароль, которые никому не известны. Есть ли логины/пароли по умолчанию, типа scott/tiger из Oracle? Почему, когда пытаешься законнектиться на сервер удаленно, то студия, SQL-manager, и остальные приложения не просят ничего, а когда через терминал - спрашивают? Почему, когда через ClassFactory коннект осуществляется вне зависимости, есть пароль или нету, хоть в диалоге его спрашивает?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407042
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яТут проблема скорее в том, как вы будете собирать данные раскиданные по объектам в один глобал, чтобы ничего не забыть. Вторая проблема как будете вставлять данные обратно в объекты. Будет ли это добавление как новых объектов, или перезапись которые уже и так есть, и как согласовывать иды объектов и связи, и будет ли перенос сведений об удалении объектов. Основная проблема не столько в переносе самих данных, сколько в организации собственно такой репликации с точки зрения вашей прикладной системы.
да, это тоже не маленькая часть проблемы.
таблица одна, но имеются
а) связи с другими таблицами
б) связь таблицы с собой,
в) несколько коллекций (массив, список и characterstream) (как раз с ними больше всего проблем)
г) встраиваемый класс
д) Имеется также ммм... забыл как называется, внешние таблицы на Оракловском сервере, которые импортированы через технологию SQL-Gateway. И данные из той таблицы, которую необходимо перенести ссылаются на эти внешние таблицы.

Имел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? Или все уже давно освоили глобалы?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407250
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В прикладной системе велся протокол удаления данных?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407276
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRus3. Экспортировать все в новый глобал, экспортировать его, потом обратно импортировать
Проблемы : Не работал с глобалами, пока очень все тяжело задается, не знаю как правильно задать условие на копирование только необходимых
Так если данные уже выбираются SQL-запросом - этим же запросом и выбирать. Останется только объектным подходом забрать свойства-массивы и все.

Как писать в глобал - можно разобрать на некоем примере...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407285
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusИмел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных?
По-мне таки лучше и не усложнять. Потом будет меньше "головной боли", как у вас сейчас...

[quot MasteRus]Или все уже давно освоили глобалы?
С этого вообще все и начиналось в М-технологиях, классы появились не так давно...
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407293
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusИмел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных?
По-мне таки лучше и не усложнять. Потом будет меньше "головной боли", как у вас сейчас...

MasteRusИли все уже давно освоили глобалы?
С этого вообще все и начиналось в М-технологиях, классы появились не так давно...

P.S. Что-то плохо процитировал выше...
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36407746
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusиз которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицуЕсли не секрет, для чего такое может быть нужно?
И вще вопрос. На вашу таблицу имеются ссылки из других таблиц (RelationShip или "просто" по ID)?
Первое легко определить по наличию в определении класса (=вашей таблицы) конструкций вида
Код: plaintext
Relationship SomeName As SomePackage.SomeClass [ Cardinality = many ... ]
Второе определить сложнее, могут присутствовать ключевые слова ForeignKey, но необязательно.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36408841
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть небольшие подвижки: тупо скопировал класс и необходимые данные скопировал в класс-копию. Вопрос можно ли создать объект с заранее заданным ID, чтобы потом не учитывать ссылки таблицы самой на себя? Например, ##class(MyPackage.MyClass).%New(100500)?
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36409121
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRus
таблица одна, но имеются
а) связи с другими таблицами
б) связь таблицы с собой,
в) несколько коллекций (массив, список и characterstream) (как раз с ними больше всего проблем)
г) встраиваемый класс
д) Имеется также ммм... забыл как называется, внешние таблицы на Оракловском сервере, которые импортированы через технологию SQL-Gateway. И данные из той таблицы, которую необходимо перенести ссылаются на эти внешние таблицы.

Имел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? Или все уже давно освоили глобалы?

Да уж... "таблица одна... но их много" ;)

Я на протяжении многих лет в подобных случаях использую очень эффективный прием (не помню, откуда почерпнул):
Если решение задачи представляется сложным, нужно изменить задачу таким образом, чтобы ее решение стало простым...

Мощь такого подхода оценил неоднократно...

Если говорить конкретно о Вашем случае, напрашивается идея убедить заказчика в том, что из изначального сложноструктурированного и большого объема информации ему _реально_ понадобится несколько простых наборов данных.

Я бы в эту сторону решал...
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36409944
Отбор данных для экспорта и экспорт

Можно сделать так - в классе %SYSTEM.SQL есть метод QueryToTable ( документация ).

Он делает простую вещь - исполняет SQL-запрос, под результат генерирует новое описание класса, и формирует данные этого класса на основе результатов запроса. СоздаетеЭкспортируете данные этих таблиц (в каком формате удобнее), и переносите на новую систему.

Учитывая, что у вас структура не плоская - запросом надо будет ее "сплющить". Объем полученной таблицы зависит, естественно, от сложности вашей структуры и количества элементов в ее коллекциях. Возможно, будет иметь смысл сделать несколько таких "материализованных view", и выгружать их по отдельности.

Импорт
Переносите с первой машины XML-описания материализованных view, импортируете их данные, пишете скрипт для обновления существующих структур данных (можно SQL, можно на COS написать - смотря, как будет удобно).
Если там простая замена - то перенос SQL из таблицы в таблицу, будет, наверное, самым простым.



http://writeimagejournal.com - InterSystems Russia Technology Blog.

http://writeimagejournal.com/forum - InterSystems Russia Technology Community.
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36412273
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRusможно ли создать объект с заранее заданным ID
Можно.

Код: plaintext
1.
2.
s par=##class(adm.Nast).%New() 
s par.Id="REGAUTO" 
d par.%Save()
...
Рейтинг: 0 / 0
Экспорт и Импорт из Cache части данных
    #36414835
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Как-то засомневался... У Вас класс, случаем, не с переопределенной схемой хранения? Или cвойство Id объявлено? Потому как для простого класса (Cache 5.020):
Код: plaintext
1.
2.
3.
 Class User.Test Extends %Persistent [ ClassType = persistent, ProcedureBlock ] {
  Property Name As %String;
 }
получим что-то вроде :
Код: plaintext
1.
2.
3.
4.
5.
6.
 USER>s t=##class(Test).%New()
 USER>s t.Id="2"
 
 S t.Id="2"
 ^
 <PROPERTY DOES NOT EXIST>
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Экспорт и Импорт из Cache части данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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