我正在通过java程序提取unidata表的字典信息和数据(平面文件),我使用'table name'来获取这两个东西,现在我们有其他项目,其中Unidata数据库被分成多个模块(目录)每个目录包含文件和更多目录,现在我的问题是 1)我们怎么能说一个特定的文件是Unidata表? 2)对于某些文件,我们能够获取字典信息而不是数据,这两个东西在同一位置是不可用的?如果没有,我们怎么能把这两件事情联系起来呢? 我是Unidata的新手,请忽略我对这个问题的天真,并阐明一些亮点。感谢
答案 0 :(得分: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表。