Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 Экспорт данных из cache в dbf файл  [new]
druzhok
Member

Откуда:
Сообщений: 14
Помогите, пожалуйста, (первый раз работаю с cache) есть данные, хранящиеся в cache мне необходимо создать файл dbf, прочитать данные из cache и записать их в созданный dbf файл. Поиском наткнулся на пост http://www.sql.ru/forum/835244/eksport-dannyh-iz-cache-v-dbf , там есть пример
TMPCRT                                 ; * Пример создания файла dbf *
 N
 S dbname=$NA(^F($J,"^dbf","Name"))
 S dbdata=$NA(^F($J,"^dbf","Data"))
 s file="\\ksa\box\tmp.dbf"
 K @dbname
 D TMPNEW
 S dbdev=$$DbOpen(file)
 K @dbdata
 D REPLACE("KFOSB","tmp")
 D REPLACE("SUM",100)
 D DBAPPEND()
 K @dbdata
 D REPLACE("KFOSB","tm1")
 D REPLACE("SUM",200)
 D DBAPPEND()
 C dbdev
 W !!,"Все."
 Q


Вижу разные команды с параметрами, в начале каждой строки одиночные буквы латиницы, как я понимаю тип данных. Подскажите сайт или литературу, где можно почитать как писать программы в cache и где именно нужно писать, и может есть какой-нибудь справочник по командам. Заранее спасибо.
16 окт 18, 17:50    [21705667]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
drakut
Member

Откуда: Москва
Сообщений: 86
druzhok,
автор
Вижу разные команды с параметрами, в начале каждой строки одиночные буквы латиницы, как я понимаю тип данных

Нет, это сокращенный вариант записи команд, например D эквивалентно Do, S эквивалентно Set, K эквивалентно Kill и т.д. по первой букве, но не всех команд. Это стандартная возможность.

Где почитать : начните с основ, https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS
16 окт 18, 17:57    [21705681]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 933
druzhok, https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_abbreviations
16 окт 18, 18:00    [21705690]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
druzhok
Member

Откуда:
Сообщений: 14
drakut,

спасибо, буду разбираться
16 окт 18, 18:00    [21705691]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3771
Все-таки, если у вас 32 битная Каше, я бы вам рекомендовал заполнять этот файл через ODBC.

Либо, как вариант, вообще данные в Каше представить в виде таблицы (очень вероятно, что они уже так преставлены), а программой, понимающей dbf файлы прочитать данные из Каше через ODBC
16 окт 18, 19:55    [21705805]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
druzhok, это мой пример.
Вроде старался максимально показать, дабы и незнающий Каше мог понять и сделать программку по аналогии...
17 окт 18, 09:16    [21706093]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
druzhok
Member

Откуда:
Сообщений: 14
krvsa
druzhok, это мой пример.
Вроде старался максимально показать, дабы и незнающий Каше мог понять и сделать программку по аналогии...


Спасибо. Как я понял из вашего примера, мне для начала нужно создать dbf со своей структурой, потом сделать запрос, чтобы получить resultset (или в cahe это что то другое), а потом уже считывать данные. А какая команда используется чтобы, узнать конец ли данных? Или может есть какая-нибудь команда, которая сразу заносит все данные из выборки в dbf (при условии что dbf создан согласно структуре, которая получилась при запросе)?
17 окт 18, 12:48    [21706422]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
druzhok
Как я понял из вашего примера, мне для начала нужно создать dbf со своей структурой, потом сделать запрос, чтобы получить resultset (или в cahe это что то другое), а потом уже считывать данные.

Ты не правильно понял мой пример...
Ты процитировал пример записи 2-х строк в dbf файл. Там есть и его создание, это процедура
D TMPNEW

Т.о. нет никакого "запроса"... Это пример создания и записи.

druzhok
А какая команда используется чтобы, узнать конец ли данных?

Вот пример чтения данных
	/// Пример чтения записей
TMPLOAD
	n
	S dbname=$NA(^F($J,"^DFDBF","Name"))
	s file="\\ksa\box\tmp.dbf"
	s file=$$DbOpen(file)
	i file="" w !!,"Проблемы с открытием файла..." q
	f  s val=$$NextRec(file,"drec") q:val=""  d TMPREC
	d DbClose(file)
	q
TMPREC ; показать запись
	w !
	zwrite drec
	h 1
	q

Достижение конца записей определяет процедура
$$NextRec()

Но у меня не учитывается факт удалена запись или нет... Т.к. мы либо качаем все данные, либо создаем новые с нуля.

druzhok
Или может есть какая-нибудь команда, которая сразу заносит все данные из выборки в dbf (при условии что dbf создан согласно структуре, которая получилась при запросе)?

У нас нет такой стандартной процедурки... Но ее всегда можно реализовать, имея тот дефолтный пример, что я выкладывал ранее.

Могу за бабосы выполнить за вас экспорт/импорт данных.
17 окт 18, 14:12    [21706533]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
druzhok
Member

Откуда:
Сообщений: 14
krvsa,
подскажите пожалуйста, может есть команда в cache, чтобы из одного файла скопировать в другой файл? Или может есть команда cache, чтобы запустить командную строку?
Заранее спасибо.
17 окт 18, 14:31    [21706563]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
druzhok
чтобы из одного файла скопировать в другой файл?

Есть класс специальный...
https://docs.intersystems.com/cache20152/csp/documatic/%CSP.Documatic.cls
Там есть метод копирования...

druzhok
Или может есть команда cache, чтобы запустить командную строку?

И это есть...
https://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fzf-1
17 окт 18, 15:32    [21706696]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
Что-то ссылка на класс не указывает на сам класс.
%Library.FileBinaryStream
17 окт 18, 15:35    [21706704]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
druzhok
Member

Откуда:
Сообщений: 14
krvsa, Спасибо большое, буду разбираться
17 окт 18, 15:43    [21706715]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 933
krvsa,
%Library.FileBinaryStream
%Stream.FileBinary
17 окт 18, 16:20    [21706796]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
doublefint, еще бы рассказал в чем разница.
Там ведь еще и %Library.File есть...
19 окт 18, 09:02    [21708454]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 933
krvsa, слышал ( запамятовал где ) рекомендацию в последних версиях пользовать пакет %Stream вместо %Library.File*
Отличается, например, этим
19 окт 18, 16:18    [21709318]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 933
Упс, судя по документации, уже не отличается. Название класса короче? :)
19 окт 18, 16:27    [21709326]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 933
doublefint
слышал ( запамятовал где ) рекомендацию в последних версиях пользовать пакет %Stream
В документации и слышал
Stream class that stores binary data in external files. This class is deprecated in favor of %Stream.FileBinary.
19 окт 18, 16:33    [21709338]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из cache в dbf файл  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13109
doublefint, вот и я теми же "слухами" живу...
22 окт 18, 08:57    [21710686]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить