Sync + - 70 000 записей из CSV в drupal

У меня есть файл CSV с ок. 70.000 записей, которые я хочу импортировать в Drupal 7. После этого клиент будет предоставлять новый CSV-файл на ежедневной основе, который должен синхронизировать обновленные строки с Drupal.

Я написал импорт с Каналами и Migrate , но в обоих случаях требуется импортировать 70 000 строк. Есть ли другое решение для импорта данных быстрее в Drupal 7?

5 голосов | спросил Jenzzz 2 J000000Tuesday13 2013, 18:43:18

3 ответа


1

Если вам нужна функция update в ваших записях, я не уверен, как вы обходите сканирование для Diffs, чтобы найти изменения - это требует времени.

Я использовал Migrate для загрузки простых CSV-файлов и таблиц. Вы просмотрели функцию Migrate 2.6 Hash() для отслеживания изменений данных в материалах, чтобы выполнять только обновления из ваших исходных данных? http://www.acquia.com/blog/migrate-26-framework-changes

  

С Migrate 2.6 мы ввели опцию 'track_changes' для   MigrateSource. Если вы пройдете 'track_changes' => 1 в вашем массиве параметров   на исходном конструкторе, Migrate будет хешировать исходные данные после   prepareRow () вызывается и сохраняет хэш в таблице карт на начальном   Импортировать. При последующем импорте снова будет хеш входящего источника   данных и сравнить их с сохраненным хешем - если хеши не совпадают,   объект будет реимпортирован, а новый хэш будет сохранен, иначе он будет   пропускаются. Конечно, это более медленный метод, чем высокие отметки, но   когда вы должны забрать измененные записи и не иметь хорошего высокого уровня   пометьте поле в исходных данных, это путь.

Есть ли причина, по которой вы не можете импортировать CSV-файл в таблицы MySQL, а затем импортировать свои данные с помощью Migrate или Drush? Однажды в таблицах вы можете легко разбить данные /таблицы для одновременного запуска вставок для ускорения.

ИЗМЕНИТЬ

Я ударил веб-службу .NET для 100 000 записей для данных кампуса в EDU. Я обнаружил, что синтаксический анализ данных линейно взял меня на порядок в 1 час от вершины XML-файла до нижней. Запрашивая каждый отдел индивидуально в одно и то же время (получите ~ 60 XML-файлов одновременно вместо 1 большого xml-файла) и параллельно обрабатывайте до 8 потоков (через Ultimate Cron ) тот же процесс теперь занимает ~ 5 минут.

В какой-то момент линейная обработка данных просто терпит неудачу, и вам нужно найти другие средства.

ответил tenken 3 J000000Wednesday13 2013, 02:44:50
0

Вы можете напрямую обойти Drupal и синхронизировать файл напрямую с базой данных. Это даст вам наилучшую производительность. Вот один из способов сделать это http://www.tech-recipes.com/rx/2345 /import_csv_file_directly_into_mysql /

ответил LeeHunter 2 J000000Tuesday13 2013, 23:35:27
-1

Я не уверен, что означает «навсегда» с точки зрения фактического времени. Тем не менее, я использовал структуру импорта пользователя и пользовательский модуль импорта плюс модуль, и он отлично работает.

ответил seyi 2 J000000Tuesday13 2013, 21:30:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132