Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые форумчане! Имеется следующая проблема: Имеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный? Версия Cache - 5.0.21 (Build 6408U). Пробовал воспользоваться экспортом таблицы в SQL-Manager, но он экспортирует А) всю таблицу б) Не всегда может импортировать обратно. Сейчас пытаюсь экспортировать в XML, однако класс(Таблица?) имеет достаточно сложную структуру, поэтому пока ничего не выходит. Есть ли ещё идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 07:08 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusКакой способ можете наиболее простой и наименее затратный? Думается запись в произвольный глобал, его экспорт/импорт и последующая обработка будет таковым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 08:20 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
как вы выгружаете в XML ? вам нужно выгрузить одну таблицу? нет никаких связей ? если это только одна таблица, то в чем ее сложность ? в любом случае класс можно дополнительно отнаследовать от %XML.Adaptor и тогда можно экспортировать/импортировать без проблем _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 09:10 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
DAiMorбез проблем Ты версию их Кащея видел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 09:37 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
видел, у меня такая же _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 09:47 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusИмеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный? Версия Cache - 5.0.21 (Build 6408U). Запишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. Это наиболее простой и наименее затратный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 11:03 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
DAiMorкак вы выгружаете в XML ? Пытаюсь, как показано в примерах работы с XML. DAiMor вам нужно выгрузить одну таблицу? нет никаких связей ? если это только одна таблица, то в чем ее сложность ? Таблица одна, но сложная: Имеются связи с другими таблицами, помимо этого связь таблицы с собой, встраиваемый класс, несколько коллекций (массив, список и characterstream) DAiMor в любом случае класс можно дополнительно отнаследовать от %XML.Adaptor и тогда можно экспортировать/импортировать без проблем Простые свойства экспортируются без проблем, проблема как раз в сложных. Сейчас попробую отнаследовать абсолютно все классы, которые могут быть завязаны с необходимым от %XML.Adaptor, однако что делать с коллекциями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:23 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
ну яЗапишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Это наиболее простой и наименее затратный. К сожалению, глобалы для меня пока темный лес. Можно ли часть данных из таблицы экспортировать? Не пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе? ну я Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. ммм... совсем не понял... Можно еще раз, только более развернуто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:28 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusсовсем не понял... Можно еще раз, только более развернуто? Если глобал сохранён в формате Cache Block , то перед импортом нужно удалить глобал с таким же именем. В противном случае получите "кашу" из старых и новых данных. Пример. - Вы экспортировали глобал ^tmpMy в формате Cache Block - Перед его импортированием в некую облать, проверьте есть ли там такой глобал (^tmpMy) - Если есть удалите его в Проводнике Каше или командой Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:42 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusК сожалению, глобалы для меня пока темный лес. Ничего сложного. Это обычные массивы, только с префиксом ^ (крышка/кепка)... Пример. Код: plaintext 1. 2. Все что вам нужно: - Пройтись по вашей "сложной таблице" - Записать данные её строк в глобал так, что бы вы потом сами же поняли откуда их брать и куда писать - Экспортировать глобал - Импортировать куда нужно - Обработать данные глобала так, что бы они попали в вашу таблицу без потери данных. MasteRusМожно ли часть данных из таблицы экспортировать? Да, можно. MasteRusНе пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе? Это смотря как вы все сделаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:47 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusну яЗапишите эти данные в специальный отдельный для этой цели глобал в виде в котором потом сможете разобрать обратно, экспортируйте его целиком блочным экспортом, переносите файл, на принимающей стороне импортируете блочным импортом и разбираете что там. Это наиболее простой и наименее затратный. К сожалению, глобалы для меня пока темный лес. Можно ли часть данных из таблицы экспортировать? Не пострадает ли при импорте из файла информация, которая уже находится в существующем глобале/таблице/классе? ну я Перед конструированием этого глобала и перед импортом его удаляете. Потому что блочный переносит глобал целиком. ммм... совсем не понял... Можно еще раз, только более развернуто? Ну подучите матчасть, лес станет посветлее. Какую часть прописать в глобал для переноса - это вы самостоятельно решаете, часть там будет или не часть и что именно и в каком виде решаете самостоятельно. Поскольку это отдельный глобал, то как может пострадать информация в других, не совсем понятно. Перед записью в глобал информации которую будете передавать убейте его. Есть такая команда kill. Перед импортом тоже. Блочный экспорт-импорт это самый подходящий вариант для переноса большого объема данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:50 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
Тут проблема скорее в том, как вы будете собирать данные раскиданные по объектам в один глобал, чтобы ничего не забыть. Вторая проблема как будете вставлять данные обратно в объекты. Будет ли это добавление как новых объектов, или перезапись которые уже и так есть, и как согласовывать иды объектов и связи, и будет ли перенос сведений об удалении объектов. Основная проблема не столько в переносе самих данных, сколько в организации собственно такой репликации с точки зрения вашей прикладной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:56 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusЗдравствуйте, уважаемые форумчане! Имеется следующая проблема: Имеется некоторая сложная таблица(сложный класс?), из которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицу. Какие способы вы можете предложить, в каких направлениях копать? Какой способ можете наиболее простой и наименее затратный? Версия Cache - 5.0.21 (Build 6408U). Пробовал воспользоваться экспортом таблицы в SQL-Manager, но он экспортирует А) всю таблицу б) Не всегда может импортировать обратно. Сейчас пытаюсь экспортировать в XML, однако класс(Таблица?) имеет достаточно сложную структуру, поэтому пока ничего не выходит. Есть ли ещё идеи? Если нужно просто продублировать записи (1 в 1 или с небольшой модификацией исходных данных), то может получится обойтись и одним SQL-запросом: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 18:20 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто пытается помочь, сейчас я буду задавать глупые вопросы, получать умные ответы и после этого много-много думать и пробовать. Думаю, чтобы ситуация была понятна, надо объяснить исходную задачу: После обновления системы повредилась часть информации, однако это вскрылось не сразу, поэтому необходимо восстановить данные с бэкапа, который был перед обновлением, провести правильно обновление и добавить ту информацию, которая добавлена в систему после обновления. Сейчас мне видятся способы решения проблемы 1. Экспортировать в таблицу через SQL-запрос, Экспортировать таблицу, восстановить бэкап, импортировать таблицу и из таблицы добавить данные Проблема : Не могу экспортировать все данные, проблема возникает с полем типа collection = array Пытаюсь сделать тоже самое объектным методом, но не получается пока, ошибка аналогична. 2. Экспортировать в XML, восстановить бэкап, импортировать из XML Проблемы : неправильно то же самое поле, плюс некоторые другие, в частности, встроенные классы (Serial), хотя они тоже наследуют %XML.Adaptor. Как правильно обрабатывать коллекции? 3. Экспортировать все в новый глобал, экспортировать его, потом обратно импортировать Проблемы : Не работал с глобалами, пока очень все тяжело задается, не знаю как правильно задать условие на копирование только необходимых 4. Экспортировать в таблицу через SQL-запрос, Экспортировать глобал, потом обратно импортировать Проблемы : См проблему п1, + ни разу не пробовал экспорт/импорт глобалов. 5. Подключиться с другого Cache-сервера с чистой базой, Экспортировать туда нужную информацию, восстановить бэкап, подключиться с основного сервера к тому, куда экспортировали и скопировать информацию обратно. Проблемы : При попытке подсоединиться к источнику данных запрашивается логин и пароль, которые никому не известны. Есть ли логины/пароли по умолчанию, типа scott/tiger из Oracle? Почему, когда пытаешься законнектиться на сервер удаленно, то студия, SQL-manager, и остальные приложения не просят ничего, а когда через терминал - спрашивают? Почему, когда через ClassFactory коннект осуществляется вне зависимости, есть пароль или нету, хоть в диалоге его спрашивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 11:41 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
ну яТут проблема скорее в том, как вы будете собирать данные раскиданные по объектам в один глобал, чтобы ничего не забыть. Вторая проблема как будете вставлять данные обратно в объекты. Будет ли это добавление как новых объектов, или перезапись которые уже и так есть, и как согласовывать иды объектов и связи, и будет ли перенос сведений об удалении объектов. Основная проблема не столько в переносе самих данных, сколько в организации собственно такой репликации с точки зрения вашей прикладной системы. да, это тоже не маленькая часть проблемы. таблица одна, но имеются а) связи с другими таблицами б) связь таблицы с собой, в) несколько коллекций (массив, список и characterstream) (как раз с ними больше всего проблем) г) встраиваемый класс д) Имеется также ммм... забыл как называется, внешние таблицы на Оракловском сервере, которые импортированы через технологию SQL-Gateway. И данные из той таблицы, которую необходимо перенести ссылаются на эти внешние таблицы. Имел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? Или все уже давно освоили глобалы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 11:45 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
В прикладной системе велся протокол удаления данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 12:52 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRus3. Экспортировать все в новый глобал, экспортировать его, потом обратно импортировать Проблемы : Не работал с глобалами, пока очень все тяжело задается, не знаю как правильно задать условие на копирование только необходимых Так если данные уже выбираются SQL-запросом - этим же запросом и выбирать. Останется только объектным подходом забрать свойства-массивы и все. Как писать в глобал - можно разобрать на некоем примере... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 12:59 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusИмел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? По-мне таки лучше и не усложнять. Потом будет меньше "головной боли", как у вас сейчас... [quot MasteRus]Или все уже давно освоили глобалы? С этого вообще все и начиналось в М-технологиях, классы появились не так давно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 13:01 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusИмел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? По-мне таки лучше и не усложнять. Потом будет меньше "головной боли", как у вас сейчас... MasteRusИли все уже давно освоили глобалы? С этого вообще все и начиналось в М-технологиях, классы появились не так давно... P.S. Что-то плохо процитировал выше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 13:02 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusиз которой надо взять часть данных, удовлетворяющих определенному условию, экспортировать их, а потом импортировать обратно в ту же самую таблицуЕсли не секрет, для чего такое может быть нужно? И вще вопрос. На вашу таблицу имеются ссылки из других таблиц (RelationShip или "просто" по ID)? Первое легко определить по наличию в определении класса (=вашей таблицы) конструкций вида Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 15:24 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
Есть небольшие подвижки: тупо скопировал класс и необходимые данные скопировал в класс-копию. Вопрос можно ли создать объект с заранее заданным ID, чтобы потом не учитывать ссылки таблицы самой на себя? Например, ##class(MyPackage.MyClass).%New(100500)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 09:10 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRus таблица одна, но имеются а) связи с другими таблицами б) связь таблицы с собой, в) несколько коллекций (массив, список и characterstream) (как раз с ними больше всего проблем) г) встраиваемый класс д) Имеется также ммм... забыл как называется, внешние таблицы на Оракловском сервере, которые импортированы через технологию SQL-Gateway. И данные из той таблицы, которую необходимо перенести ссылаются на эти внешние таблицы. Имел ли кто-нибудь дело с экспортом/импортом таких сложных структур данных? Или все уже давно освоили глобалы? Да уж... "таблица одна... но их много" ;) Я на протяжении многих лет в подобных случаях использую очень эффективный прием (не помню, откуда почерпнул): Если решение задачи представляется сложным, нужно изменить задачу таким образом, чтобы ее решение стало простым... Мощь такого подхода оценил неоднократно... Если говорить конкретно о Вашем случае, напрашивается идея убедить заказчика в том, что из изначального сложноструктурированного и большого объема информации ему _реально_ понадобится несколько простых наборов данных. Я бы в эту сторону решал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 10:55 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
Отбор данных для экспорта и экспорт Можно сделать так - в классе %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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 14:41 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
MasteRusможно ли создать объект с заранее заданным ID Можно. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2010, 14:05 |
|
||
|
Экспорт и Импорт из Cache части данных
|
|||
|---|---|---|---|
|
#18+
krvsa, Как-то засомневался... У Вас класс, случаем, не с переопределенной схемой хранения? Или cвойство Id объявлено? Потому как для простого класса (Cache 5.020): Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2010, 21:08 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36404640&tid=1558246]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 444ms |

| 0 / 0 |
