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
Обсуждают сегодня