У меня чертовски много времени с импортом данных (PHP MySQL) - PullRequest
2 голосов
/ 22 декабря 2008

Я создаю приложение, которое извлекает данные из файла Excel .csv и применяет различные уровни форматирования, перемещения и отображения. Почти все разобрано, кроме одной заминки с очисткой данных. Вот пример данных из Excel:

  1. ОТЛИЧНЫЕ ПРОИЗВОДИТЕЛЬНОСТИ, ОТЛИЧНЫЕ ПРОИЗВОДИТЕЛЬНОСТИ, 57744 КРУГЛОГО ОЗЕРА RD, НЬЮ-ЙОРК, NY
  2. "GUASTAVINO'S, INC", GUASTAVINO'S, 8250 WESTHEIMER RD, НЬЮ-ЙОРК, NY
  3. THE CLARKES GROUP LLC, FROG BAR HUGO, 915 3-й AVE, ЧИКАГО, Иллинойс
  4. TRIOMPHE RESTAURANT CORP, "GEORGE'S JEAN", 1309 E PUTNAM AVE, НЬЮ-ЙОРК, NY

Я не могу выполнить прямую explode () из-за строк 3 и 2. В обеих этих строках есть «строка, строка», и я не контролирую экспорт данных, просто выполняю очистку при импорте.

Я испробовал несколько не изящных опций, и это убивает время обработки. Кто-нибудь может придумать элегантное решение?

Я не могу использовать функциональность MySQL IMPORT, к сожалению, он должен обрабатываться через PHP.

Ответы [ 2 ]

7 голосов
/ 22 декабря 2008

Вы также можете попробовать выполнить инструкцию SQL:

LOAD DATA INFILE 'mydata.csv'
  FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"';

Я слышал, как вы используете PHP, но вы можете запустить приведенное выше заявление из PHP. Или вы имеете в виду, что ввод - это поток, полученный в результате чтения CSV, а не файл CSV? К сожалению, LOAD DATA INFILE требует имя файла, оно не может принимать стандартный ввод.

4 голосов
/ 22 декабря 2008

Я вижу, на ваш вопрос ответили. Но если вы хотите прочитать файл в PHP для использования, вы могли бы просто использовать fgetcsv .

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