Как найти список столбцов в 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 вещи, которые делают файл словаря особенным:

  1. Вы получаете доступ к нему через ключевое слово "DICT" перед именем файла данных.
  2. Команда LIST (и связанные команды) будет использовать ее по умолчанию для обработки связанного файла данных.
  3. Он имеет структуру, которая определяется файлом DICT.DICT, которому необходимо следовать, чтобы пункт 2 работал.

Как правило, словари обслуживаются программистами и администраторами баз данных вручную. В Universe нет элементов управления, которые бы гарантировали, что записи DICT создаются для каждого поля в соответствующем файле данных, и нет причины, по которой у вас не может быть много записей DICT для каждого поля. Элементы словаря используются для управления форматированием и преобразованием выходных данных, поэтому обычно для каждого поля данных предусмотрено несколько элементов DICT.

Записи словаря также могут объединять поля данных, выполнять операции над несколькими полями и получать данные из других файлов. Поэтому иногда даже не ясно, к какому полю данных относится запись DICT.

Единственный способ составить простой список элементов словаря, соответствующих файлу данных, - это проверка. Используйте команду LIST DICT {имя_файла} и найдите записи с наименьшим количеством манипуляций с данными в их полях форматирования.

Еще несколько полезных утверждений, которые могут быть вам полезны:

SORT DICT имя файла (это то же самое, что и список, за исключением того, что результат отсортирован)

SORT ONLY DICT filename (отображает только название словаря)

Другие вопросы по тегам