我正在通过一个 java 程序为 unidata 表提取字典信息和数据(平面文件),其中我使用“表名”来获取这两个东西,现在我们有其他项目,其中 Unidata db 分为多个模块(目录)每个目录包含文件和更多目录,现在我的问题是 1)我们怎么能说一个特定的文件是 Unidata 表?2)对于某些我们能够获取字典信息但不能获取数据的文件,这两件事在同一位置是否不可用?如果不是,我们如何将这两件事联系起来?
我对 Unidata 很陌生,请忽略我在这个问题上的幼稚并阐明一些观点。谢谢
问问题
1066 次
1 回答
1
如果您登录 Unidata 并从内部查看它,可能会更清楚一些。一个 unidata “帐户”(数据库)包含文件和字典。文件类似于数据库表,但没有关于内容或列的元数据。字典是一种特殊类型的表,其中包含有关相应文件的元数据。所以如果我这样做:
:CREATE.FILE MY.FILE 37,1
Create file D_MY.FILE, modulo/1,blocksize/1024
Hash type = 0
Create file MY.FILE, modulo/37,blocksize/1024
Hash type = 0
Added "@ID", the default record for UniData to DICT MY.FILE.
我在当前帐户中创建了两个 unix 级文件。两者都是空的。因为我没有指定,所以系统创建了一个散列文件,以及“主字典”或VOC中的一个指针。
:ED VOC MY.FILE
Top of "MY.FILE" in "VOC", 3 lines, 19 characters.
*--: P
001: F
002: MY.FILE
003: D_MY.FILE
Bottom.
第一个属性告诉我们文件的类型。第二个和第三个是指向数据和字典文件所在位置的指针(它们不必在当前帐户中)。其他类型包括 DIR 类型、LD(具有共享字典的子文件的多级文件)和一些不太常见的组合。更多信息来自:
:HELP CREATE.FILE
CREATE.FILE
Syntax
CREATE.FILE [DICT | DATA] [DIR | MULTIFILE | MULTIDIR] filename [,subfile]
[modulo [,block.size.multiplier]] [TYPE hashtype] [DYNAMIC [KEYONLY
| KEYDATA] [PARTTBL part_tbl]] [RECOVERABLE] [OVERFLOW]
Note: The PARTTBL option is available on UniData for UNIX only.
Synonym
CREATE-FILE
Description
The ECL CREATE.FILE command creates a UniData file. If you do not
indicate the kind of file to create (such as dictionary, data, or
directory), UniData creates filename (both the data and dictionary
files) as a static hashed file. If an operating system-level file
of the same name already exists in the target account, CREATE.FILE
fails.
因此,如果您已经成功提取数据,但想了解新表的类型以及它们的字典在哪里,答案是查看 VOC 表。
于 2015-11-21T03:10:16.270 回答