в кликхаусе у которой есть поле FixedString(3) допустим geo
Есть табличка в постгресе у которой тоже есть поле geo которое просто text.
И есть голанг который забирает из кх и кладёт в постгрес...
И на пустых значениях из КХ в постгре вылетают ошибки вида
ERROR: invalid byte sequence for encoding "UTF8": 0x00 (SQLSTATE 22021)
И я вот не пойму как это адекватно обработать и с точки зрения чего вообще ;D
То есть я могу в goкоде на все FixedString поля в КХ делать на всякий случай
strings.ReplaceAll(some_field, "\x00", "")
Но чё-т как-то.. хз, такое себе помоему
Или лучше в SELECT для КХ навесить на geo поле toStringCutToZero (или есть другой метод преобразования) ?
судя по сообщению об ошибка это не ошибка clickhouse у вас там точно по дороге где нибудь ODBC словаря какого то не завалялось
Я не говорю что кх ошибка, ошибка в постгре
тогда надо смотреть в golang скрипт если там выбирается из clickhouse то есть где то промежуточная структура в golang перед тем как положить в postgres в нее надо глядеть для этого поля там точно пустая строка или что-то еще
Блин, я думал я понятно всё описал...
Даже пустая FixedString в КХ это 3 байта, и я так понимаю на промежуточном моменте при выгрузке они принимают dbl \x00\x00\x00 и при попытке вставить такое значение в постгре, постгре вылетает с ошибкой из за как бы NULLстроки У меня скорее вопрос на каком моменте FixedString лучше конвертировать, можно ли из КХ сразу достать String из поля FixedString(3) и тд
ну да, там автодополнение toString() можно сделать
https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/#tostring Это вы про этот метод?
Обсуждают сегодня