Более быстрый способ импортировать тысячи записей из одного текстового файла в базу данных MySQL?

У меня есть около 50 текстовых файлов, каждый из которых содержит около 8 столбцов и 80 000 записей. Я написал скрипт в Matlab, который читает все файлы один за другим, а затем помещает их в MySQL, используя один оператор INSERT для каждого файла. Однако это занимает огромное количество времени (даже для одного файла!). Я также пытался использовать PHPmyAdmin, который говорит, что файл слишком велик для загрузки (около 8 МБ). Поэтому, пожалуйста, предложите обходной путь и какой идеальный способ обычно импортировать большие файлы txt. Кроме того, сколько времени обычно требуется для импорта одного такого файла?


person Gaurav    schedule 19.08.2010    source источник


Ответы (4)


Используйте синтаксис LOAD DATA INFILE.

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

person Mchl    schedule 19.08.2010
comment
да, LOAD DATA, кажется, работает довольно быстро. интересно, почему одна вставка для нескольких записей занимает так много времени!! - person Gaurav; 19.08.2010

Все, что вам нужно, находится в этом руководстве: http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html

person tszming    schedule 19.08.2010

Попробуйте mysqlimport

Также табличный тип myisam будет импортироваться быстрее, зависит от того, нужна ли вам поддержка транзакций (innodb).

person Joelio    schedule 19.08.2010
comment
запустите транзакцию перед вставкой, и InnoDB догонит MyISAM (не забудьте зафиксировать после;)) - person Mchl; 19.08.2010

Используйте множественные ВСТАВКИ. Это не так дорого, так как вы все равно подключаетесь к mysql только один раз. Затем вы можете использовать цикл для обновления ваших значений ( -> ваш sql) и выполнить (я думаю, что это «выборка» для mathlab) запрос.

(см. http://spx.arizona.edu/Projects/Database/Accessing%20mySQL%20through%20Matlab.pdf, например)

person Fabian Fritz    schedule 19.08.2010