String.
На входе следующий json:
{
"data": {
"k1":"v1",
"k2":"v2",
"k3": {
...
}
},
"filed_1": "v3",
"filed_2": "v4",
"filed_3": "v5"
}
Я бы хотел записать в нее данные следующим образом:
* в поле data - значение ключа data. Все значения в приведены к строкам.
* в поля field_1(2,3) - значения ключей filed_1(2,3) соответственно.
Однако, когда я передаю этот объект на insert c JSONEachRow, то получаю ошибку:
"Cannot parse JSON string: expected opening quote: (while reading the value of key data)"
Как это победить?
пишите весь JSON в поле JSON и вставляйте только это поле а поля data и field_1,2,3 сделайте через DEFAULT JSONExtract...(data, ...) https://clickhouse.com/docs/en/sql-reference/functions/json-functions/
спасибо вставлять только поле со всем json - получилось поля field_1(2,3) через DEFAULT JSONExtractString заполняться тоже получилось не получается конструкцией DEFAULT JSONExtractString(json, 'data') получить структуру из ключа 'data' - возвращает пусто В чем может быть причина?
вопрос решился изменением JSONExtractString(json, 'data') на JSONExtractRaw(json, 'data') спс))
тут надо понять что ваш JSON это не JSONEachRow. JSONEachRow это плоская структура, без вложенностей и в одной строке, без переводов строки. JSONEachRow конечно быстрее чем JSON
Обсуждают сегодня