загрузка таблицы mysql, слишком большой, чтобы поместиться в памяти в файлы CSV (с помощью WorkBench) - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть огромное хранилище таблиц sql (> 50M) в базе данных mysql. Мне просто нужно загрузить их в файлы .csv.

Я понимаю, что могу ограничить размер возвращаемых значений следующими значениями:

SELECT * FROM myTable
LIMIT 1000000; 

Однако для строк> 1M у меня постоянно заканчиваются строкиmemory.

Более того, по какой-то причине, если я использую любой другой клиент, кроме MySQL Workbench 5.2.47, я получаю отказавший ответ / соединение с сервером, отказавшее в рукопожатии. Поэтому я должен придерживаться этого инструмента и версии. Кроме того, я не могу изменить машину, поэтому ограничение памяти является ограничением.

Как реализовать и выполнить цикл загрузки и сохранения огромной таблицы в файле (ах) csv, а также обеспечить порядок и уникальность результатов?

1 Ответ

1 голос
/ 06 ноября 2019

Вы можете использовать SELECT INTO FILE для генерации csv. Он не должен иметь никаких проблем при создании файла с 1М строк.

См. Документацию по синтаксису и символу разделения полей и т. Д.

https://dev.mysql.com/doc/refman/8.0/en/select-into.html

Один персональный образец SELECT * INTO OUTFILE '/<OUTPUT_DIR>/export.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' FROM TABLE_NAME <WHERE condition> <ordering> LIMIT <BATCH_SIZE>;"

...