UniVerse RetrieVe, как мне запросить файл для всех значений его столбцов?
Что-то вроде ответа на мой вопрос о поиске имен столбцов.
В UniVerse вы не можете запросить файл для всех его столбцов, если только @
Фраза в словаре вашего файла установлена для всех столбцов таблиц. Если это не так, как вы запрашиваете таблицу для всех значений ее столбцов?
Таким образом, я могу получить полный список столбцов (имя столбца и отображаемое имя), используя:
LIST DICT file NAME
Это вернет список всех столбцов и их отображаемые имена. Как мне тогда запросить таблицу для всех столбцов, которые у нее есть?
LIST file
Будет только запросить его LIST file @id
(@id - единственное, что есть в @).
ОБНОВЛЕНИЕ Я нашел блог - живой дышащий человек, который использует версию UniVerse старше моей! где он жалуется на то же самое, но говорит, что нет решения, стесняющегося обновления @
со всеми колонками, пожалуйста, бог, кто-то докажет, что он (Дэн Уоттс) не прав.
Что если у вас есть таблица из 200 столбцов, и вы хотите, чтобы SELECT * возвращал все 200 столбцов? Извините, но вы должны будете ввести все 200 имен столбцов в этой записи "@". И если вы добавляете, удаляете или переименовываете столбец, вы должны будете помнить, чтобы редактировать эту запись "@". Я чувствую твою боль! Этот громоздкий подход восходит к ODBC-драйверу UniVerse, и я полагаю, что они не могут изменить его сейчас, не сломав множество приложений. Вы можете найти подробности, описанные в непостижимом IBM-ese в UniVerse ODBC Guide.
5 ответов
LIST ALL не работает на вселенной.
Одна вещь, которую вы можете сделать, это LIST.ITEM или LIST-ITEM в зависимости от вашего вкуса. Это перечислит каждый атрибут в файле, в котором есть данные:
>LIST.ITEM ACTIVITY
LIST.ITEM ACTIVITY 06:52:10pm 14 Jan 2010 PAGE 1
1
001 LEXMARK MULTI PRINT
002 THD
003 PJ
007 10355
009 Y
010 CAGNEW
011 15349
012 52111
014 1ý2ý3ý4ý5
015 Deinstall Make/ModelýDeinstall LocationýSigned Off ByýData/Voice AvailableýR
elocated Location
016 1ý2ý3ý4ý5
2
001 OMN
002 OMN
003 PJ
004 OMN*8437
005 6
009 N
010 CAGNEW
011 15349
012 51958
>
Если вы хотите что-то сделать с данными, напишите программу и сделайте что-то вроде этого:
OPEN "ACTIVITY" TO F.ACTIVITY ELSE STOP
SELECT F.ACTIVITY
LOOP
READNEXT ID ELSE EXIT
READ R.ACTIVITY FROM F.ACTIVITY, ID THEN
..................
END
REPEAT
Пытаться
LIST file ALL
Конечно, есть предел тому, сколько он может на самом деле сделать, поэтому он может подать. Чего вы на самом деле хотите достичь?
Кроме того, в целом, вы должны посетить сайт U2 компании Rocket Software. Вы сможете скачать полный набор инструкций там.
Существует также список рассылки, который обычно дает быстрые ответы, чтобы помочь людям. Вы можете найти подробную информацию об этом на сайте группы пользователей U2.
Для большинства установок Universe/Pick программисты обычно создают несколько стандартизированных сокращенных способов облегчения специального доступа к данным через RECALL/RETRIEVE/ENGLISH/LIST. Я часто видел записи в файле VOC с именами, такими как F1, F2, F3 и т. Д., Которые выглядят как словари "S" или "D". Обычно это что-то стандартное, например, 10 символов в ширину и выравнивание по левому краю с заголовком столбца типа "Поле 1". Использование "*A1", "*A2" и т. П., Похоже, является еще одним стандартом, который разработан для общих имен полей.
Вы можете использовать их в любой команде списка, и если файловый словарь не имеет F1 (или чего-либо еще), он будет использовать тот из файла VOC. Так что команда вроде:
СПИСОК {имя файла} F1 F2 F3
Буду работать. Это хорошо, потому что вы просто должны настроить его один раз, и тогда он будет доступен везде, где вы не хотите тратить время на поиск названий словаря.
Кроме того, нет никаких причин, по которым вы не можете настроить элемент словаря группового типа в VOC, называемый "ALL.FIELDS", и вставить туда газилионные элементы типа "F1". Это будет выглядеть так:
001: PH 002: F1 F2 F3 F4 F5 F6 F7 F8 F9 {....} F200
Это в значительной степени похоже на то, как будет выглядеть ваш элемент @ dictionary, за исключением того, что в нем будут все нужные элементы словаря. В этом случае вы можете создать словарный элемент "ALL.FIELDS" в словаре фактического файла и поместить в него надлежащие элементы словаря со всем необходимым форматированием.
Предостережение заключается в том, что нет гарантии, что UV-словарь будет полным и точным, поскольку на самом деле нет нигде правил, которые заставляли бы программистов создавать элементы словаря для полей данных, которые они используют. Если вас это очень волнует, вам нужно написать программу для сканирования файла и анализа данных для создания отчета о том, как на самом деле работают поля.
Если вы можете добраться до точки, где словарь будет надежным, то стоит убедиться, что каждое поле имеет один и только один соответствующий элемент словаря типа "А". Затем тривиально написать программу, которая выполняет SELECT для словаря для всех записей типа "A" и создает элемент словаря группы "ALL.FIELD", в котором перечислены все. Затем просто убедитесь, что все, кто добавляет альтернативные элементы словаря для различного форматирования или преобразования, используют только элементы типа "S", "I" и "D".
Лично я нахожу загрузку элемента @ Dictionary с каждым возможным полем раздражающим при выполнении повседневных задач в среде PICK. Как правило, вы хотите, чтобы материал, который удобно помещался на 80-колоночном дисплее, имел удобную сортировку и суммирование. Я бы предпочел, чтобы SQL-компоненты были настроены и названы соответствующим образом.
Пара моментов:
Дэн, на который ссылается IBM, поставщик ADO.NET, не будет частью UniVerse (или UniData) в будущем. Бизнес IBM U2 (включая UniVerse) был продан Rocket Software осенью прошлого года, и пара компонентов не осуществила переход.
Во-вторых, есть пара стандартных фраз для DICTionaries. @ является списком по умолчанию для CRT. @SELECT определяет поля, возвращаемые из SELECT в стиле SQL.
>ED DICT VOC @SELECT
New record.
----: I
0001= PH
0002= NAME TYPE
0003=
Bottom at line 2.
----: FI
"@SELECT" filed in file "DICT VOC".
>SELECT * FROM VOC;
NAME.......... TYPE
VERIFY.SQL V
DIVX V
INVISIBLE K
QUIT.KEY X
LEADING K
DELETE.LIST V
...