kdb:使用 \l 加载数据文件(table vs 列表)
kdb: Use \l to load a data file (table vs list)
在 https://code.kx.com/q4m3/11_IO/#1113-serializing-and-deserializing-q-entities
提供的示例中
我发现我可以用\l
加载回一个table,但是不能加载一个列表。我是不是遗漏了什么,或者 \l
只支持加载某些类型的数据?
table
`:/tmp/data/t set ([] c1:`a`b`c; c2:10 20 30)
get `:/tmp/data/t
\l /tmp/data/t / OK
列表
`:/tmp/data/L set 10 20 30
get `:/tmp/data/L
\l /tmp/data/L / 'type
您可以通过加载列表所在的目录来将列表加载到内存中
q)`:/tmp/data/L set 10 20 30
`:/tmp/data/L
q)\l /tmp/data/
q)L
10 20 30
我相信这可能是一个真正的错误,从 documentation \l
应该加载任何 q 序列化文件。但是我建议不要使用 \l
加载文件,原因如下
- 加载枚举分区table时,很容易没有加载关联的sym文件,然后没有符号(见下例)
- 文件以文件名加载,可以覆盖对象,使用
get
会好很多
q)t:.Q.en[`:tmp;([] c1:`a`b`c; c2:10 20 30)]
q)`:/tmp/data3/t/ set t
`:/tmp/data3/t/
q)\
C:\Users\cbiggs\Documents>q
KDB+ 4.0 2020.05.04 Copyright (C) 1993-2020 Kx Systems
w64/ 8(16)core 16227MB cbiggs lptp633 192.168.56.1 EXPIRE 2021.05.18 cbiggs@kx.com KOD #4170988
q)\l /tmp/data3/t
`t
q)t
c1 c2
-----
0 10
1 20
2 30
在 https://code.kx.com/q4m3/11_IO/#1113-serializing-and-deserializing-q-entities
提供的示例中我发现我可以用\l
加载回一个table,但是不能加载一个列表。我是不是遗漏了什么,或者 \l
只支持加载某些类型的数据?
table
`:/tmp/data/t set ([] c1:`a`b`c; c2:10 20 30)
get `:/tmp/data/t
\l /tmp/data/t / OK
列表
`:/tmp/data/L set 10 20 30
get `:/tmp/data/L
\l /tmp/data/L / 'type
您可以通过加载列表所在的目录来将列表加载到内存中
q)`:/tmp/data/L set 10 20 30
`:/tmp/data/L
q)\l /tmp/data/
q)L
10 20 30
我相信这可能是一个真正的错误,从 documentation \l
应该加载任何 q 序列化文件。但是我建议不要使用 \l
加载文件,原因如下
- 加载枚举分区table时,很容易没有加载关联的sym文件,然后没有符号(见下例)
- 文件以文件名加载,可以覆盖对象,使用
get
会好很多
q)t:.Q.en[`:tmp;([] c1:`a`b`c; c2:10 20 30)]
q)`:/tmp/data3/t/ set t
`:/tmp/data3/t/
q)\
C:\Users\cbiggs\Documents>q
KDB+ 4.0 2020.05.04 Copyright (C) 1993-2020 Kx Systems
w64/ 8(16)core 16227MB cbiggs lptp633 192.168.56.1 EXPIRE 2021.05.18 cbiggs@kx.com KOD #4170988
q)\l /tmp/data3/t
`t
q)t
c1 c2
-----
0 10
1 20
2 30