Как найти список столбцов в UniVerse с RetrieVe или SQL? - PullRequest
2 голосов
/ 13 января 2010

У меня возникла проблема, когда table (файл) настроен так, чтобы возвращать столбец foo для LIST table и SELECT * FROM table. Мне нужно знать другие возможные столбцы в table. Я почти уверен, что это было достигнуто установкой @ (определение поведения unqualified LIST) и @select (определение поведения * с очень SELECT), но я не знаю, как получить полный список колонн. Как прочитать схему таблицы в uvsh и запросить столбцы физической таблицы?

Выполнение LIST.ITEM в таблице показывает мне список всех номеров и значений полей, но как мне найти DISPLAY NAME и имя столбца пронумерованных полей?

Ответы [ 4 ]

2 голосов
/ 21 января 2010

Вот основные варианты:

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 отображается по умолчанию во время списка или сортировки. TOXML может быть полезен, но есть множество других встроенных функций XML.

2 голосов
/ 14 января 2010

В предыдущем ответе, который я получил на 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.

Теперь я вижу поля в хорошем (довольно чистом) списке, но у меня нет ни малейшего представления о том, как запросить файл для всех его полей.

1 голос
/ 27 января 2010

В Universe каждый файл имеет связанный файл словаря. Файл словаря в основном представляет собой файл данных и может обрабатываться точно так же, как файл данных для различных целей. Есть 3 вещи, которые делают файл словаря особенным:

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

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

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

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

0 голосов
/ 13 апреля 2011

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

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

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

...