Можете ли вы массово импортировать в crateDB в таблице с массивом столбцов объектов? - PullRequest
0 голосов
/ 27 июня 2019

Итак, я запускаю CrateDB 3.3.3 и у меня есть таблица, в которой есть столбец типа массив объектов

CREATE TABLE IF NOT EXISTS "doc"."testarray" (
"id" INTEGER,
"myarraycol" ARRAY(OBJECT (DYNAMIC) AS (
  "avg" DOUBLE,
  "eventconditiondefid" INTEGER,
  "max" DOUBLE,
  "min" DOUBLE
))
)

Я уже знаю, как вставить в него одну строку

insert into testarray (id, myarraycol) values (2, [{"min"=2,"max"=3,"avg"=0.5,"eventconditiondefid"=123},{"min"=0,"max"=1,"avg"=0.5,"eventconditiondefid"=456}]);

Однако в моем приложении я массово вставляю данные в CrateDB через конечную точку HTTP.

https://crate.io/docs/crate/reference/en/latest/interfaces/http.html

У меня это работает для обычных таблиц, но я не могу заставить его работать для таблицы со столбцом массива объектов. Может кто-нибудь сказать мне, как я могу заставить массовую вставку работать с этими типами столбцов? Я не могу найти какие-либо примеры или документацию на нем.

{ "stmt":"INSERT INTO testarray (  id, myarraycol) VALUES (  ?,   ?) ","bulk_args":[[1,[{"min"=0.616523,"max" = 1.10974,"Avg" = 0.874692,"EventConditionDefId" = 505}]]]}

(вышеуказанный код массовой вставки завершается неудачно, он возвращает (400) неверный запрос)

1 Ответ

1 голос
/ 28 июня 2019

Проблема в JSON, она должна выглядеть следующим образом:

{ "stmt":"INSERT INTO testarray (id, myarraycol) VALUES (?,?) ","bulk_args":[[1,[{"min":0.616523,"max" : 1.10974,"Avg" : 0.874692,"EventConditionDefId" : 505}]]]}
...