Как найти список столбцов в UniVerse с RetrieVe или SQL?
У меня есть проблема, когда table
(файл) настроен на возврат столбца foo
на LIST table
а также SELECT * FROM table
, Мне нужно знать другие возможные столбцы в table
, Я уверен, что это было достигнуто путем установки @
(поведенческое определение неквалифицированного LIST
), а также @select
(Поведение определения * с очень SELECT
) но я не знаю, как получить полный список столбцов. Как мне прочитать схему таблицы в uvsh
и запрос для столбцов физической таблицы?
Бег LIST.ITEM
на столе показывает мне список всех номеров полей и значений, но как мне найти DISPLAY NAME
а имя столбца пронумерованных полей?
4 ответа
В предыдущем ответе, который я получил на SO, упоминалось LIST DICT
как способ получить некоторые метаданные. Это было на самом деле то, что я думаю, я хотел. Официальная документация использует LIST DICT
; однако, в моей системе я думал, что не было LIST DICT
, есть. Требуется аргумент файла. Это просто не была отдельная команда (многие команды содержат пробелы), вместо этого в (UniVerse 10.1) список определяется как:
LIST [ DICT | USING [ DICT ] dictname ] filename [ records | FROM n ]
[ selection ] [ output.limiter ] [ sort ] [ output ] [ report.qualifiers ] [TOXML
[ELEMENTS] [WITHDTD] [XMLMAPPING mapping_file]]
Итак, в итоге, тот же глагол (LIST
) для запроса данных используется для запроса схемы, с тем же файлом назначения.
Первоначально, когда я предположил, что не было LIST DICT
Я пошел поиск по файлу VOC с RetrieVe, используя LIST VOC WITH NAME MATCHING LIST...
Я смог определить одноименный LIST.DICT
, PAragraph, который отображает содержимое СЛОВАРЕЙ, отсортированных по типу записи. Это было именно то, что я хотел, за исключением того, что в результате получился неуправляемый список из 400 строк. Я не вижу документации для LIST.DICT
где-нибудь, и кажется, что классификаторы записей и классификаторы отчетов не работают на LIST.DICT
как они делают на LIST
, Все это было правдой и усугубило мое замешательство, на языке UniVerse: LIST.DICT
это фраза, сохраненное утверждение, LIST
мне нужен глагол
Итак, вернемся к моим вопросам:
Любая идея о том, как сделать вывод LIST DICT
управляемым?
Вы можете использовать спецификатор отчета и явно указывать столбцы с помощью позиционного F#
синтаксис, или указав имена столбцов.
LIST DICT <file> <columns>
в моей системе вы можете получить список имен полей и их отображаемых имен, например, выполнив
LIST DICT <file> NAME
ИМЯ происходит из основного словаря, который можно запросить, используя LIST DICT DICT.DICT
,
Теперь я могу видеть поля в хорошем (довольно чистом) списке, но у меня нет ни малейшего представления о том, как запросить файл для всех его полей.
Вот основные варианты:
LIST DICT foo NAME
SELECT @ID, NAME FROM DICT foo;
Это даст вам физическое местоположение, которое соответствует глаголу LIST-ITEM:
SORT DICT foo WITH TYPE EQ "D" BY LOC LOC NAME
SORT DICT foo WITH TYPE EQ "D" BY LOC LOC NAME TOXML
Обратите внимание, что "имя столбца" или @ID отображается по умолчанию во время LIST или SORT. TOXML может быть полезен, но есть множество других встроенных функций XML.
В Universe каждый файл имеет связанный файл словаря. Файл словаря в основном представляет собой файл данных и может обрабатываться точно так же, как файл данных для различных целей. Есть 3 вещи, которые делают файл словаря особенным:
- Вы получаете доступ к нему через ключевое слово "DICT" перед именем файла данных.
- Команда LIST (и связанные команды) будет использовать ее по умолчанию для обработки связанного файла данных.
- Он имеет структуру, которая определяется файлом DICT.DICT, которому необходимо следовать, чтобы пункт 2 работал.
Как правило, словари обслуживаются программистами и администраторами баз данных вручную. В Universe нет элементов управления, которые бы гарантировали, что записи DICT создаются для каждого поля в соответствующем файле данных, и нет причины, по которой у вас не может быть много записей DICT для каждого поля. Элементы словаря используются для управления форматированием и преобразованием выходных данных, поэтому обычно для каждого поля данных предусмотрено несколько элементов DICT.
Записи словаря также могут объединять поля данных, выполнять операции над несколькими полями и получать данные из других файлов. Поэтому иногда даже не ясно, к какому полю данных относится запись DICT.
Единственный способ составить простой список элементов словаря, соответствующих файлу данных, - это проверка. Используйте команду LIST DICT {имя_файла} и найдите записи с наименьшим количеством манипуляций с данными в их полях форматирования.
Еще несколько полезных утверждений, которые могут быть вам полезны:
SORT DICT имя файла (это то же самое, что и список, за исключением того, что результат отсортирован)
SORT ONLY DICT filename (отображает только название словаря)