8.4.13. Ручной импорт и экспорт таблиц ClickHouse

С помощью ручного импорта и экспорта вы можете сохранять себе резервные копии ваших таблиц, а также переносить их между инстансами. Все команды выполняются на вашем устройстве (не на хостинге). Для их выполнения требуется ОС Linux или macOS, на устройствах с ОС Windows можно использовать WSL. Во всех командах используйте свои данные (хост, порт, пользователь, пароль, названия баз данных и таблиц).

  1. В настройках инстанса включите порт TCP ClickHouse.
  2. В настройках безопасности разрешите доступ для вашего IP.
  3. На своём устройстве установите консольную утилиту 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"
Содержание