![]() |
1
3
从二进制文件的实验来看,当您保存一个平面文件时,表计数似乎被保存为二进制文件的一部分,在初始对象类型和列标题之后占用4个字节,这将因表而异。
这将有助于你理解菲奥娜发布的功能。
你可以用
将小的endian字节转换成long,我们就得到了行数。因为它只需要读取4个字节而不是整个文件,所以速度要快得多。
对于具有100m行和2列的表:
如果您有一个八字表,您可以像这样从字节9-13读取其中一列中的元素数,假设该列是一个简单列表:
您可以在这里阅读有关从二进制文件读入的更多信息 https://code.kx.com/q/ref/filenumbers/#1-binary-files |
![]() |
2
4
如果将basepath定义为指向存储所有平面表的目录的路径字符串,则可以创建行计数字典,如下所示:
但是,请注意,为了避免将它们拉入内存,您必须使用
更新:我不建议这样做,并强烈建议做以上,但好奇后,研究使用
q二进制文件格式在任何地方都没有文档记录,唯一的方法是保存不同的内容并查看字节的变化。它也可能在不同版本之间发生变化——上面的内容是为3.5编写的,可能只对3.0-3.5有效,而不是最新的3.6版本或任何2.X版本。 给定的代码按以下方式工作:
希望这能回答你的问题! |
|
3
3
您可以使用以下方法使您当前拥有的更高效
这将通过不包括额外的数据读入和当前正在执行的连接来提高计数速度。你是正确的,但是如果保存的表是八字展开的,那么你只需要读入一列就可以了,这样效率就更高了。 |
![]() |
4
0
但是哈奇:-(
|
![]() |
amandath · 函数更新-带动态列的多变量函数 7 年前 |
![]() |
marrowgari · Kdb数据库到PyQ中的NumPy数组 7 年前 |
![]() |
chrise · 函数的KDB命名空间 7 年前 |
![]() |
Fomalhaut -C · 在输入列表上迭代函数(Q/KDB) 7 年前 |
![]() |
DJ180 · 按enter键将导致KDB后台进程停止 7 年前 |
|
user8415577 · 返回kdb中的表列表 7 年前 |
![]() |
marrowgari · PyQ:q.upsert到八字桌 7 年前 |