У меня есть около 50 текстовых файлов, каждый из которых содержит около 8 столбцов и 80 000 записей. Я написал скрипт в Matlab, который читает все файлы один за другим, а затем помещает их в MySQL, используя один оператор INSERT для каждого файла. Однако это занимает огромное количество времени (даже для одного файла!). Я также пытался использовать PHPmyAdmin, который говорит, что файл слишком велик для загрузки (около 8 МБ). Поэтому, пожалуйста, предложите обходной путь и какой идеальный способ обычно импортировать большие файлы txt. Кроме того, сколько времени обычно требуется для импорта одного такого файла?
Более быстрый способ импортировать тысячи записей из одного текстового файла в базу данных MySQL?
Ответы (4)
Используйте синтаксис LOAD DATA INFILE
.
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
person
Mchl
schedule
19.08.2010
да, 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
запустите транзакцию перед вставкой, и 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