如何使用 rasdaman 加载 json 个文件

How to load json files with rasdaman

我正在研究数组数据库管理系统,特别是 Rasdaman, i understand superficially the architecture and how the system works with sets and multidimensional arrays instead of tables as it is usual in relational dbms, im trying to save my own type of data to check if this type of databases can give me better performance to my specific problem(geospatial data in a particular format: DGGS),为此我根据文档指示的结构创建了自己的基本类型,创建了我的数组类型,设置类型最后是我的测试集,我试图用以下想法将数据插入到这个集合中:

query_executor.execute_update_from_file("insert into test_json_dict values decode(, 'json', '{\"formatParameters\": {\"domain\": \"[0:1000]\",\"basetype\": struct { char k, long v } } })'", "...path.../rasdapy-demo/dggs_sample.json")

我正在使用库 rasdapy 从 python 开始工作,而不是仅使用 rasql(无论如何我都使用它来验证小事情),但我一直在与错误消息作斗争,这些错误消息给出几乎没有信息:

Internal error: RasnetClientComm::executeQuery(): illegal status value 5

我的源文件中有这种类型的数据:

{
  "N1": 6
}

一个带有键和值的简单字典,我想保存这两个东西,我也尝试过一个更大的字典,上面有多个键和值,但是如果我理解正确的话,rasdaman 解码函数需要一个基类型定义我试图将我的数据源格式更改为简单的字典。很明显,我没有为解码做适当的定义,或者我的源文件格式错误,但我无法在网上找到任何示例,关于如何进行的任何想法?也许我什至从错误的角度做这件事,也许我应该尝试使用 OGC 网络覆盖服务 (WCS) 标准?我还不明白这一点,所以我一直在避免它,无论如何,非常感谢任何建议或指导。提前致谢。

编辑:

我一直在尝试加载以下格式的 CSV 数据:

1 930
2 461
..

和以下查询

query_executor.execute_update_from_file("insert into test_json_dict values decode(, 'csv', '{\"formatParameters\": {\"domain\": \"[1:255]\",\"basetype\": struct { char key, long value } } })'", "...path.../rasdapy-demo/dggs_sample_4.csv")

但仍然没有结果,即使它看起来与 Look for the CSV/JSON examples 中的文档示例非常相似,但仍然没有结果。可能是什么问题?

似乎我的问题是尝试使用 rasdapy 库,这个库工作正常但是当使用 csv 和 json 等数据格式时,最好使用 rasql 命令行选项,它在文档 :

filePaths - An array of absolute paths to input files to be decoded, e.g. ["/path/to/rgb.tif"]. This improves ingestion performance if the data is on the same machine as the rasdaman server, as the network transport is bypassed and the data is read directly from disk. Supported only for GDAL, NetCDF, and GRIB data formats.

它还说:

As a first parameter the data to be decoded must be specified. Technically this data must be in the form of a 1D char array. Usually it is specified as a query input parameter with , while the binary data is attached with the --file option of the rasql command-line client tool, or with the corresponding methods in the client API.

如果 rasdapy 考虑到了这一点,那将会很有趣。无论如何,使用 rasql 可以提供更好的响应错误,因此我向遇到类似问题的任何人推荐它。

示例命令可以是:

rasql -q 'insert into test_basic values decode(, "csv", "{ \"formatParameters\": {\"domain\": \"[0:1,0:2]\",\"basetype\": \"long\" } }")' --out string --file "/home/rasdaman/Documents/TFM/include/DGGS-Comparison/rasdapy-demo/dggs_sample_6.csv" --user rasadmin --passwd rasadmin

使用此数据:

1,2,3,2,1,3

之后,您只需开始根据需要使其变得越来越复杂。