Импортируйте CSV-файл объемом 260 ГБ в MySQL
У меня действительно большой CSV ~260 ГБ, и я хочу импортировать его в MySQL. Я использую следующий скрипт MySQL в MacOS
DROP TABLE ЕСЛИ СУЩЕСТВУЕТ tmp_catpath_5;
создать таблицу tmp_catpath_5( a1 BIGINT(20),a2 BIGINT(20),a3 BIGINT(20),a4 BIGINT(20),a5 BIGINT(20), c1 BIGINT(20),c2 BIGINT(20),c3 BIGINT(20)),c4 BIGINT(20),c5 BIGINT(20), ИНДЕКС (a5));
загрузить данные локального файла '/ Тома / Резервное копирование машины времени 1/tmp_catpath_5.csv' в таблицу tmp_catpath_5 ПОЛЯ, ПРЕКРАЩАЕМЫЕ ',' ENCLOSED BY '' 'ЛИНИИ, ПРЕКРАЩАЕМЫЕ'\n';
Он работает для небольших файлов, например, 150 ГБ, но для этого размера база данных исчезает сразу после команды загрузки
ОШИБКА 1049 (42000): неизвестная база данных
Есть ли ограничение на размер MySQL? Это что-то еще? Я использую приложение MySQL из MAMP (LAMP для MacOS), может ли оно отличаться от официального приложения MySQL?
2 ответа
Я не знаю, есть ли ограничения для определенных механизмов БД, но я встречался с некоторыми администраторами Министерства обороны, которые управляют системой MySQL, которая импортирует 10 ТБ каждый день, и у них нет такой проблемы.
Вместо того, чтобы использовать макросы, я рекомендую написать скрипт для разбора входного файла и создания из него операторов вставки, которые можно подавать прямо в MySQL. Таким образом, вы не имеете дело со всем файлом за один раз, только по одной строке за раз. Мне нравится использовать Perl для таких вещей.
Вы также можете рассмотреть возможность использования усечения вместо удаления таблицы и повторного ее создания каждый раз.
Хотя это на самом деле не отвечает на ваш вопрос, рассматривали ли вы возможность разбить файл на более мелкие куски? Утилита Unix "split" может легко справиться с этим.
Когда вы говорите "вылетает", вы имеете в виду клиент MySQL или сервер? Любая ошибка отображается?