Clickhouse вставить данные json в строку столбца

#python #postgresql #clickhouse

#python #postgresql #clickhouse

Вопрос:

Нам нужно вставить данные из postgres в clickhouse. Одно из полей в postgres имеет тип json. В clickhouse это поле имеет тип Nullable(строка). Для вставки данных мы используем плагин Airflow ClickHouse:

  data = postgress_hook.get_records(query)     
 clickhouse_hook.run(
                    sql="INSERT INTO "  self.clickhouse_tgt_table  " values",
                    parameters=data
 )
  

Но у нас есть ошибка при вставке:

 'dict' object has no attribute 'encode'
  

Какой тип clickhouse мы должны использовать для хранения данных json?

Комментарии:

1. не могли бы вы предоставить подробное описание ошибки (со стеком вызовов )? Вы уверены, что запрос имеет тип str , а не dict ?

2. я думаю, вам следует сериализовать данные json перед вставкой их в clickhouse, и это, вероятно, сработает. вслепую, исходя из вашего сообщения об ошибке, я бы сказал, что вы считываете данные json из postgress в dict, и при попытке записать их в clickhouse ваш код python пытается сериализовать его (закодировать), и он не находит способ сериализовать dict. Но. может быть, я ошибаюсь

Ответ №1:

объект ‘dict’ не имеет атрибута ‘encode’

это сообщение не от сервера CH, а от драйвера python.