8.4.13. Ручной импорт и экспорт таблиц ClickHouse
С помощью ручного импорта и экспорта вы можете сохранять себе резервные копии ваших таблиц, а также переносить их между инстансами. Все команды выполняются на вашем устройстве (не на хостинге). Для их выполнения требуется ОС Linux или macOS, на устройствах с ОС Windows можно использовать WSL. Во всех командах используйте свои данные (хост, порт, пользователь, пароль, названия баз данных и таблиц).
Подготовка
- В настройках инстанса включите порт TCP ClickHouse.
- В настройках безопасности разрешите доступ для вашего IP.
- На своём устройстве установите консольную утилиту clickhouse-client по инструкции для вашей ОС.
Проверка подключения
Подключение к инстансу:
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass'
После успешного подключения можно выполнять SQL-запросы к ClickHouse.
Просмотр списка баз данных:
SHOW DATABASES;
Выбор базы данных:
USE db1;
Просмотр списка таблиц выбранной базы данных:
SHOW TABLES;
Отключение:
exit
Экспорт
Структура таблиц и их данные экспортируются отдельно друг от друга: структура — в формате SQL, данные — в формате Native. Формат Native является наиболее оптимальным — быстрее экспортируется и импортируется, занимает меньше места.
Экспорт структуры таблицы:
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --database db1 --query "SHOW CREATE TABLE db1.table1 FORMAT TabSeparatedRaw;" > table1.sql
Экспорт структуры всех таблиц с вырезанным названием БД (удобно для последующего импорта в БД с другим названием):
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --query "SELECT replaceOne(create_table_query, 'CREATE TABLE db1.', 'CREATE TABLE ') FROM system.tables WHERE database = 'db1' AND is_temporary = 0 FORMAT TabSeparatedRaw;" > tables.sql
Экспорт данных таблицы:
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --query "SELECT * FROM db1.table1 FORMAT Native;" > table1.native
Экспортировать данные сразу всех таблиц нельзя, каждую нужно экспортировать отдельно.
Импорт
Импорт структуры:
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --multiquery < table1.sql
Импорт данных:
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --query="INSERT INTO db1.table1 FORMAT Native" < table1.native
Проверка результата (считает и выводит количество записей в таблице):
clickhouse-client --host example.clickhouse.tools --port 59123 --user user1 --password='pass' --query="SELECT count() FROM db1.table1"