#kdb
#kdb
Вопрос:
В примерах, предоставленных https://code.kx.com/q4m3/11_IO/#1113-serializing-and-deserializing-q-entities
Я обнаружил, что могу использовать l
для обратной загрузки таблицы, но не могу загрузить список. Я что-то упускаю или l
поддерживает только обратную загрузку данных определенных типов?
таблица
`:/tmp/data/t set ([] c1:`a`b`c; c2:10 20 30)
get `:/tmp/data/t
l /tmp/data/t / OK
Список
`:/tmp/data/L set 10 20 30
get `:/tmp/data/L
l /tmp/data/L / 'type
Ответ №1:
Вы можете загрузить список в память, загрузив каталог, в котором он находится
q)`:/tmp/data/L set 10 20 30
`:/tmp/data/L
q)l /tmp/data/
q)L
10 20 30
Ответ №2:
Я считаю, что это может быть подлинной ошибкой, из документации l
следует загружать в любой q сериализованный файл. Однако я бы не советовал использовать l
для загрузки в файлы по следующим причинам
- При загрузке таблицы с перечислимыми разделами очень легко не загружать связанный файл symb и затем не иметь символов (см. Пример ниже)
- Файлы загружаются с именем файла, который может перезаписывать объекты, гораздо лучше использовать
get
q)t:.Q.en[`:tmp;([] c1:`a`b`c; c2:10 20 30)]
q)`:/tmp/data3/t/ set t
`:/tmp/data3/t/
q)\
C:UserscbiggsDocuments>q
KDB 4.0 2020.05.04 Copyright (C) 1993-2020 Kx Systems
w64/ 8(16)core 16227MB cbiggs lptp633 192.168.56.1 EXPIRE 2021.05.18 cbiggs@kx.com KOD #4170988
q)l /tmp/data3/t
`t
q)t
c1 c2
-----
0 10
1 20
2 30