Нет таблицы в памяти после выхода в KDB - PullRequest
0 голосов
/ 28 апреля 2020

Когда я выхожу из сессии, мои таблицы удаляются. = / Что мне делать, поэтому, когда я подключаюсь к kdb, я снова вижу свои таблицы.

Мои таблицы должны содержать данные за несколько месяцев, которые постепенно добавляются из файлов. Также другие люди должны иметь к ним доступ.

PS: конечно, я понимаю, я мог бы сохранить их в файл, а затем восстановить. Но они мне нужны в памяти без сохранения каких-либо файлов

Простой пример загрузки / создания таблицы

rlwrap $HOME/l64/l64/q
t:flip `c1`c2`c3!(`a`b`c;42;1.1)

Ctrl + z - выход из системы

rlwrap $HOME/l64/l64/q

без таблицы t

Ответы [ 3 ]

3 голосов
/ 28 апреля 2020

При втором запуске q вы начинаете новый сеанс q. Если вы хотите повторно подключиться к существующему сеансу, верните его на передний план с fg

Чтобы другие пользователи имели доступ к этим таблицам, вам нужно будет запустить q на порте и разрешить пользователям доступ и делать запросы через hopen

2 голосов
/ 28 апреля 2020

Запуск rlwrap $HOME/l64/l64/q снова открывает новый q сеанс. Вы не должны ожидать увидеть там таблицу из другого сеанса.

Если вы хотите перетаскивать данные из одного q сеанса в другой, вам нужно будет использовать ip c. Для этого вам необходимо открыть порт в первом сеансе q либо с флагом командной строки:

rlwrap $HOME/l64/l64/q -p 5042

, либо из самого процесса:

q)\p 5042
q)t:flip `c1`c2`c3!(`a`b`c;42;1.1)

Затем через секунду q процесс может перетащить таблицу:

q)h:hopen`::5042
q)h`t
c1 c2 c3
---------
a  42 1.1
b  42 1.1
c  42 1.1
q)hclose h

Любой другой пользователь на том же сервере сможет подключиться к вашему порту. Если ваши таблицы достаточно велики (особенно если они разделены), вам нужно быть осторожным с тем, какие запросы может использовать любой другой пользователь. Я рекомендую прочитать официальный документ Kx на Разрешения с помощью kdb + .

2 голосов
/ 28 апреля 2020

Если это таблицы, которые вы определяете, например t:flip `c1`c2`c3!(`a`b`c;42;1.1)

Вы можете создать файл example.q, который определяет их. Затем запустите q следующим образом:

rlwrap $HOME/l64/l64/q example.q

Также я бы порекомендовал добавить q в качестве псевдонима с rlwrap к .bashr c, чтобы вам не приходилось вводить его каждый раз .

alias q='QHOME=~/q rlwrap -r ~/q/l32/q'

https://code.kx.com/q/learn/install/linux/

...