如何将数据帧作为新 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 限制)
我知道这个问题已经回答了
我的问题:我有一个数据框,我正在使用 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 限制)