Как использовать файл для переноса данных из mysql в clickhouse? - PullRequest
0 голосов
/ 15 сентября 2018

Мне нужно перенести данные из Mysql в ClickHouse и провести некоторое тестирование.Эти две сети баз данных не работают, я должен использовать файлы для передачи.Первое, о чем я думаю, это то, что я могу использовать инструмент mysqldump для экспорта файлов .sql.

mysqldump -t -h192.168.212.128 -P3306 --default-character-set = utf8 -uroot -prootимя_базы_данных имя_таблицы> test.sql

Затем я обнаружил, что в таблице mysql содержится 120 миллионов фрагментов данных.Оператор вставки экспортированного таким образом файла .sql очень длинный.Как избежать этой ситуации, такой как экспорт 1000 данных каждый раз как оператор вставки?

Кроме того, этот файл .sql слишком большой, его можно разделить на маленькие файлы, что нужно сделать?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

clickhouse-client --host = "localhost" --port = "9000" --max_threads = "1" --query = "INSERT INTO database_name.table_name FORMAT Native"

0 голосов
/ 15 сентября 2018

mysqldump имеет возможность включить или выключить, используя многозначные вставки.Вы можете выполнить одно из следующих действий в соответствии с вашими предпочтениями:

Отдельные операторы вставки для значения:

mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --skip-extended-insert -uroot -proot database_name table_name > test.sql 

Операторы вставки с несколькими значениями:

mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --extended-insert -uroot -proot database_name table_name > test.sql 

Итакто, что вы можете сделать, это сначала вывести дамп схемы следующим образом:

mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --no-data -uroot -proot database_name > dbschema.sql 

Затем выведите данные как отдельные операторы вставки самостоятельно:

mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --skip-extended-insert --no-create-info -uroot -proot database_name table_name > test.sql 

Затем можно разбить файл INSERT накак можно больше штук.Если вы работаете в UNIX, используйте команду split, например.

И если вас беспокоит, сколько времени займет импорт, вы также можете добавить опцию --disable-keys, чтобы ускорить вставку какхорошо ..

НО моя рекомендация не беспокоиться об этом так сильно.mysqldump не должен превышать способность MySQL импортировать в одном выражении, и он должен работать быстрее, чем отдельные вставки.Что касается размера файла, то одна приятная вещь в SQL заключается в том, что он прекрасно сжимается.Этот многодигабайтный дамп SQL превратится в очень компактный файл gzip, bzip или zip.

РЕДАКТИРОВАТЬ: если вы действительно хотите настроить количество значений для вставки в многозначном дампе вставки, вы можете добавитьопция --max_allowed_packet.Например --max_allowed_packet = 24M.Размер пакета определяет размер отдельного пакета данных (например, вставки), поэтому, если вы установите его достаточно низким, это должно уменьшить количество значений на вставку.Тем не менее, я бы попробовал это как есть, прежде чем вы начнете с этим возиться.

...