描述:
用文件创建组表。
f.create(C,…;x;b)
备注:
用组表文件f创建组表,C为组表的列,C前带#表示维,维及其前面的所有字段必须有序。当f是文件组时生成复组表,x是分表表达式。
参数:
f |
组表文件对象/文件组对象。 |
C |
组表的列。 |
x |
分表表达式,计算结果为对应分表号的整数。 |
b |
区块大小,单位为字节,缺省使用选项中设置的组表区块大小的值;第三方应用程序中集成使用时,缺省为raqsoftConfig.xml文件中配置的blockSize的值。 |
选项:
@u |
不压缩,缺省将压缩。 |
@r |
生成行存文件,缺省用列存,行存模式的组表不支持使用多路游标。 |
@y |
文件已存在时强制重新创建,缺省中断计算。 |
@p |
按第一个字段作为分段键。 |
@v |
列存方式下,数据维护时对比列是否纯,并保存数据类型。 |
@t |
维构成键,且最后一个键是时间键,此时不能再有附表;支持复组表。 |
@d |
用于复组表,键字段后的第一个字段认定为更新标识字段,字段值有三种:null表示新增,true表示删除;false表示修改。 程序可以根据更新标识字段值读取复组表数据。 |
返回值:
组表/文件组
示例:
|
A |
|
1 |
=file("employee1.ctx") |
生成组表文件employee1.ctx。 |
2 |
=A1.create(#EID,NAME,GENDER) |
创建组表employee1.ctx的基表,EID、NAME、GENDER为基表的列名,其中EID表示维。 |
3 |
=connect("demo").cursor("select EID,NAME,GENDER,SALARY from employee where GENDER='M' ").sortx(EID) |
|
4 |
=connect("demo").cursor("select EID,NAME,GENDER,SALARY from employee where GENDER='F' ").sortx(EID) |
|
5 |
=[A3,A4].mcursor() |
返回多路游标。 |
6 |
=file("emp.ctx":[1,2]) |
生成文件组,包含的文件分别为1.emp.ctx、2.emp.ctx。 |
7 |
=A6.create@y(#EID,NAME,GENDER,SALARY;if(GENDER=="F",1,2)) |
创建复组表,if(GENDER=="F",1,2)为分表表达式,使用@y选项,文件已存在时强制重新创建。 |
8 |
=A7.append@i(A5) |
将多路游标A5中的数据追加到复组表A7中,A5的每一路与A7的分表一一对应。 |
9 |
=file("1.emp.ctx").open().cursor().fetch() |
查看分表1.emp.ctx中的数据。 |
10 |
=file("2.emp.ctx").open().cursor().fetch() |
查看分表2.emp.ctx中的数据。 |
第一个字段作为分段键:
|
A |
|
1 |
=file("CITES.ctx") |
生成组表文件CITES.ctx。 |
2 |
=A1.create@p(STATEID,#CID,NAME,POPULATION) |
创建组表CITES.ctx的基表,使用@p选项将第一个字段STATEID作为分段键;选项缺省则将维字段CID作为缺省字段。 |
设置时间键:
|
A |
|
1 |
=file("transaction.ctx") |
|
2 |
=A1.create@yt(#UID,#Time,Change,Amount) |
创建组表的基表,使用@t选项,UID为基本键,Time为时间键。 |
3 |
=file("transaction.txt").cursor@t().sortx(UID,Time) |
返回对UID,Time字段有序的游标。 |
4 |
=A2.append@i(A3) |
将A3游标中的数据追加到基表中。 |
5 |
=A2.import() |
获取基表中的数据: |
使用更新标识字段:
|
A |
|
1 |
=connect("demo").cursor("select EID,NAME,GENDER from employee") |
|
2 |
=A1.derive(null:Defiled) |
|
3 |
=A2.new(EID,Defiled,NAME,GENDER) |
返回游标,内容如下: |
4 |
=file("ed.ctx":[1,2]) |
文件组1.ed.ctx、2.ed.ctx。 |
5 |
=A4.create@yd(#EID,Defiled,NAME,GENDER;if(GENDER=="F",1,2)) |
创建复组表,EID为键,使用@d选项,将Defiled作为更新标识字段,GENDER值为F的记录分到1.ed.ctx中,其余分到2.ed.ctx中。 |
6 |
=A5.append@ix(A3) |
将A1游标中的数据追加到复组表中。 |
7 |
=create(EID,Defiled,NAME,GENDER).record([1,true,,2,false, "ABC","F"]).cursor() |
返回游标,内容如下: |
8 |
=file("ed.ctx":[3]) |
|
9 |
=A8.create@yd(#EID,Defiled,NAME,GENDER;3) |
增加分表3.ed.ctx。 |
10 |
=A9.append@i(A7) |
将A7游标中的数据追加到分表3.ed.ctx中。 |
11 |
=file("ed.ctx":[1,2,3]) |
|
12 |
=A11.open() |
打开复组表。 |
13 |
=A12.cursor@w() |
将复组表返回成游标,使用@w选项,处理更新标记,即:删除EID为1的记录,修改EID为2的记录。 |
14 |
=A13.fetch() |
查看A13游标中的数据: 可以看到复组表中EID为1的记录没有被读出,且EID 为2的记录NAME值已更新。 |