如何将数据帧作为新 table 提交给 kdb?

How can I commit a dataframe to kdb as a new table?

我知道这个问题已经回答了 ,但是作为一个新的 q-bie,我仍然很困惑如何使用 q 创建和插入一个新的 table。

我的问题:我有一个数据框,我正在使用 qPython 连接到 kdb。我想将此数据帧作为新的 table.

写入 kdb

我的问题:我好像可以这样做:

df = pd.DataFrame({'sym':['abc','def','ghi'],'price':[10.1,10.2,10.3]})
with qconnection.QConnection(host = 'localhost', port = 5001, pandas = True) as q:
    q.sync('{t::x}',df)

但是{t::x}这里是什么?不会是我的 table 名字吗? x 是什么?

如何指定列类型和大小限制或者不需要它们?谢谢!

重要的是要注意,如果您使用的是 qPython 2.*,它应该是 q.sendSync 而不是 q.sync。

q.sendSync(kdbquery, parameters)

q.sendSync("{t::x}", df)
{} function syntax
: assignment like = in python
:: global assignment so that the table is defined outside of the function
t is the variable name / table name 
x is the parameter as q/kdb can use implied notation for x,y,z. You could use explicit notation like so "{[x]t::x}"

无需担心列类型,因为 kdb 会自动解释这些并且可以使用 qSQL 更新语句进行更改。 Heres a handy kx reference card for datatypes.

没有列大小限制,但 IPC 上的数据限制为 2GB。编辑:(3.4+ kdb 有 1TB IPC 限制)