如何向分裂表追加数据

huangapple go评论49阅读模式
英文:

How to append data to splayed table

问题

我有一个展开的表格,有一个文件夹结构

我的根目录/
    2023年01月01日
        我的表格
            列1
            列2
            ...
            .d                
    2023年01月02日
        ...
    ...
    符号

查看upsert的文档

x upsert y

覆盖或追加记录到一个表格
x是一个表格,或者是一个表格的名称作为符号原子,或者作为目录句柄的展开表格的名称

然而它似乎期望sym.d在文件句柄指向的文件夹中,但它们在不同的文件夹中。

如何追加数据?

英文:

I have a splayed table with a folder structure

myroot/
    2023.01.01
        mytable
            col1
            col2
            ...
            .d                
    2023.01.02
        ...
    ...
    sym

looking at the documentation of upsert

x upsert y

Overwrite or append records to a table
where x is a table, or the name of a table as a symbol atom, or the name of a splayed table as a directory handle

However it appears to expect sym and .d to be on the folder the file handle points to, but they are in different folders.

How can I append the data?

答案1

得分: 2

sym文件sym(用于枚举)和列顺序文件.d不应该放在同一个文件夹中,kdb+不会预期这样做。

您可以使用.Q.en枚举数据来追加到数据库中的表格,假设数据库已经被加载,并且您要追加的数据是一个表格。

/ 加载数据库
\l myroot

/ 枚举数据并更新
`:2023.01.01/mytable/ upsert .Q.en[`sym]data

如果要追加的数据是要插入的记录列表格式,则应该可以运行以下命令(假设使用了正确的模式):

`:2023.01.01/mytable/ upsert (`sym?`XYZ;.z.p;0.1;0.1;1;1)

或者,如果您不能或不想加载整个数据库,只需在枚举和追加之前将sym文件加载到内存中。

sym:get[`:myroot/sym]
英文:

The sym file sym (for enumeration) and column order file .d should never be in the same folder, kdb+ won't expect this.

You should be able append to a table in your database by using .Q.en to enumerate the data, assuming the database has been loaded first and the data you are trying to append is a table.

/ load database
\l myroot

/ enumerate data and upsert
`:2023.01.01/mytable/ upsert .Q.en[`sym]data

If the data to append is in the format of list of records to insert then the following should work (provided the correct schema is used):

`:2023.01.01/mytable/ upsert (`sym?`XYZ;.z.p;0.1;0.1;1;1)

Alternatively if you can't or don't wish to load the entire database you just need to bring the sym file in to memory before enumerating and appending.

sym:get[`:myroot/sym]

huangapple
  • 本文由 发表于 2023年4月17日 15:17:26
  • 转载请务必保留本文链接:https://go.coder-hub.com/76032553.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定