нужные данные, на postgresql. В ней ведутся операции по вычислению обновлений и прочий flow, который сейчас за скобками. Важно что в базе формируется витрина, пригодная для использования в клике. Надо эти данные как-то перегружать. Причем делать это регулярно и аккуратно. Объем данных может быть разным, от 1 гб, до 100 гб за один проход.
На данный момент испробованы следующие методы:
- экспорт из postgresql данных в tsv с последующим cat file.tsv | clickhouse-client
- чем не нравится - данные иногда могут содержать переносы строк и пр. слабочитаемые символы, такие файлы не вставляются и требуют правок по месту, занимают много места (большие файлы так просто в pipe не передаются, приходиться делать split что приводит к увеличению объема места необходимого для экспорта (оригинальный файл + нарезка)
- импорт данных через ODBC средствами клика (clickhouse-odbc-bridge)
- чем не нравится, при большом количестве колонок в источнике - не читает, поскольку данные переносятся через bridge - жрет много памяти, иногда клиент отваливает до того как бридж ответит, данные при этом все равно вставляются, столкнулись с тем что клик обрезает 1024 символа в длинных текстовых полях.
- импорта данных через fdw со стороны postgresql (clickhouse_fdw) - опять столкнулись с тем что надо предобрабатывать данные из-за переносов строк и, потенциально, спецсимволов. плюс сложности настройки самой fdw.
Из оставшегося непопробованным:
- mysql интерфейс клика (взять ту же fdw для postgresql и грузить через него - потому что есть надежда что mysql fdw для постгри окажется более надежным)
- ENGINE URL и написать по сути свою реализацию clickhouse-odbc-bridge и переносить данные через него
- ???
csv прекрасно работает, позволяет выгрузить из PG любые данные с помощью " " и загрузить в КХ
Обсуждают сегодня