3

对我关于查找列名的自我回答问题的跟进。

在 UniVerse 中,您无法查询文件的所有列,除非@文件字典中的短语设置为所有表列。如果不是,您如何查询表中所有列的值?

所以我可以使用以下方法获取总列列表(列名和显示名):

LIST DICT file NAME

这将返回所有列及其显示名称的列表。然后我如何查询表中的所有列?

LIST file

只会查询它LIST file @id(@id 是 @ 中唯一的东西)。

更新 我找到了一个博客——一个活生生的人,他使用的宇宙版本比我的更老!!他抱怨同样的事情,但说没有解决方案羞于更新@所有列,请上帝有人证明他(丹瓦茨)错了。

如果您有一个 200 列的表并且您希望 SELECT * 返回所有 200 列怎么办?抱歉,您必须在“@”记录中输入所有 200 个列名。如果您添加、删除或重命名列,则必须记住编辑该“@”记录。我感受到了你的痛苦!这种繁琐的方法可以追溯到 UniVerse 的 ODBC 驱动程序,我想他们现在无法在不破坏大量应用程序的情况下更改它。您可以在 UniVerse ODBC 指南中找到难以理解的 IBM 语言中描述的详细信息。

4

5 回答 5

5

LIST ALL 不适用于 Universe。

您可以做的一件事是 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
于 2010-01-14T23:54:57.023 回答
1

LIST.ITEM 文件名。这将返回所有值

于 2010-10-28T08:13:55.433 回答
0

尝试

LIST file ALL

当然,它实际上可以做多少是有限制的,所以它可以归档。你真正想要达到什么目的?

此外,更一般地,您应该访问Rocket Software 的 U2 站点。您将能够在那里下载完整的手册集。

还有一个邮件列表,通常可以快速响应以帮助人们。您可以在U2 用户组网站上找到详细信息。

于 2010-01-14T22:46:42.350 回答
0

几点:

IBM 的 ADO.NET 提供商Dan 提到,未来将不会成为 UniVerse(或 UniData)的一部分。去年秋天,IBM U2 业务(包括 UniVerse)被卖给了 Rocket Software,其中有几块没有进行过渡。

其次,有几个用于词典的标准短语。@ 是 CRT 的默认列表。@SELECT 指定从 SQL 样式 SELECT 返回的字段。

>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
...
于 2010-01-15T16:56:00.370 回答
0

对于大多数 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 字典将是完整和准确的,因为实际上没有任何规则可以强制程序员为他们使用的数据字段构建字典项。如果您非常在意,则需要编写一个程序来扫描文件并分析数据以生成有关字段实际工作情况的报告。

如果您可以达到字典可靠的程度,那么值得确保每个字段都有一个且只有一个对应的“A”类型字典项。然后编写一个程序,对所有“A”类型记录的字典执行 SELECT 并构建一个“ALL.FIELD”组字典项来列出所有记录,这很简单。然后确保每个为不同格式或转换添加备用字典项目的人只使用“S”、“I”和“D”类型的项目。

就个人而言,我发现在 PICK 环境中执行日常工作时,在每个字段中加载 @dictionary 项可能很烦人。通常,您想要的东西可以很好地适应 80 列显示,并带有有意义的排序和总计选项。我更希望看到相应的 SQL 内容设置和命名。

于 2010-01-25T17:16:30.237 回答