обработать импорт CSV с массивом Larga в три этапа - PullRequest
0 голосов
/ 02 апреля 2011

Мне нужна помощь с моим проектом. Речь идет о базе данных DVD. В настоящее время я планирую реализовать функцию данных CSV для импорта DVD со всей информацией из файла. Я сделаю это в три этапа.

Шаг 1
- показать данные, которые я хочу импортировать, построение массива
- импорт данных, создание массивов сеансов

Шаг 2
- редактировать информацию

Шаг 3
- показывает результат перед обновлением - обновить данные

пока что работает, но у меня проблема с большими файлами. Данные CSV имеют 20 столбцов (название, жанр, сюжет и т. д.), и для каждой строки в CSV есть несколько массивов, которые я создаю, чтобы использовать их на следующих шагах.

Когда у меня больше 500 строк, браузер часто падает при импорте. Я не получил ответа.

В любом случае, сейчас я пытаюсь сделать это как процесс вызова ajax. Преимущество состоит в том, что я могу определить, сколько процедур система обрабатывает каждый вызов, и пользователь может видеть, что система все еще работает, как строка состояния при загрузке / выгрузке файла.

Сейчас я пытаюсь найти полезный пример, иллюстрирующий, как я могу это сделать, но до сих пор не смог найти что-то полезное.

Возможно, у вас есть несколько подсказок или пример того, как это может работать, например, обработка 20 строк каждого вызова, построение массива.

После того, как я хотел бы использовать ту же функцию для построения массивов сессий, используя на следующем шаге и т. Д.

Некоторая информация:

Я использую fgetcsv (), чтобы прочитать строки из файла. я прохожу строки и в каждом столбце у меня разные запросы, например, уникальны ли идентификатор элемента, существует ли заголовок, существует ли описание и т. д. Поэтому, если одно из этих данных не введено, я получаю сообщение об ошибке, в какой строке и столбце происходит ошибка.

Буду признателен за любую помощь от вас

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

использовать синтаксис LOAD DATA INFILE. Я использовал его для файлов размером более 500 Мб с 3-миллионными строками, и это занимает секунды, а не минуты.

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

1 голос
/ 02 апреля 2011

Хотя это не прямой ответ, который вы искали

500 строк не должны занимать слишком много времени для обработки, так что ... вот вам еще одна мысль.

Создайте временную таблицу с помощьюПравильную структуру полей вы можете затем извлечь из нее, используя операторы выбора, различные уникальные записи для сюжета, жанра и т. д., вместо того, чтобы создавать кучу массивов по пути импорта MySQL очень быстро из ваших данных

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

С точки зрения работы с ajax вам потребуется выполнить повторяющееся синхронизированное событие для обновлениястатус, проблема не в 20 строках, а в определенном периоде времени, так как ваш браузер не может знать, при условии, что CSV загружен и вы можете обработать его в 20 строках.

Если вы введете CSV в большое большое текстовое поле, вы можете продолжить работу, взяв первые 20 строк, пропустив остальныена следующей странице и т. д., может показаться мне беспорядком.

Так что, хотя я знаю, что непосредственно не ответил на ваш вопрос, я надеюсь, что дал вам пищу для размышлений относительно альтернативных и, возможно, более практичных альтернатив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...