Экспорт данных из MySQL в Parquet, CSV или JSON с помощью ClickHouse
Инструмент clickhouse-local позволяет быстро и легко читать данные из MySQL и выводить их в различных форматах, включая Parquet, CSV и JSON. Мы будем:
- Использовать табличную функцию
mysqlдля чтения данных - Использовать предложение
INTO OUTFILE _filename_ FORMATи указать нужный формат вывода
Инструмент clickhouse-local входит в состав бинарного файла ClickHouse. Загрузите его следующим образом:
curl https://clickhouse.com/ | shЭкспорт MySQL в Parquet
Табличная функция mysql создает таблицу на основе результатов запроса, отправленного в экземпляр MySQL. Например:
SELECT *
FROM
mysql(
'localhost:3306',
'my_sql_database',
'my_sql_table',
'user',
'password'
);Мы можем направить результат этого запроса в файл с помощью INTO OUTFILE. Используйте FORMAT, чтобы указать формат создаваемого файла. Давайте выгрузим всё содержимое таблицы MySQL в файл Parquet:
./clickhouse local -q "SELECT * FROM
mysql(
'localhost:3306',
'my_sql_database',
'my_sql_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.parquet'"Экспорт MySQL в CSV
Здесь всё так же, как и для Parquet, только в имени файла мы используем расширение .csv. ClickHouse поймёт, что нам нужен вывод в формате CSV, и именно в таком виде данные будут записаны в файл:
./clickhouse local -q "SELECT * FROM
mysql(
'localhost:3306',
'my_sql_database',
'my_sql_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.csv'"Экспорт из MySQL в JSON
Чтобы экспортировать данные из MySQL в JSON, просто измените расширение файла на jsonl или ndjson:
./clickhouse local -q "SELECT * FROM
mysql(
'localhost:3306',
'my_sql_database',
'my_sql_table',
'user',
'password'
)
INTO OUTFILE 'my_output_file.ndjson'"Впечатляет, насколько инструмент clickhouse-local прост и при этом действительно мощен. Вы можете легко читать данные из такой базы данных, как MySQL, и выводить их в самых разных выходных форматах.