Обновление 10 000 полей cck ежедневно в drupal - PullRequest
1 голос
/ 20 октября 2010

Один из наших сайтов имеет около 10000 узлов. В каждом узле есть простое текстовое / целочисленное поле cck. Это целое число меняется ежедневно, поэтому их нужно обновлять каждый день. Целое число варьируется от 1 до 20000000. Поле cck для всех типов контента, поэтому оно имеет свою собственную таблицу в базе данных. Мы не используем ревизии. Я выбрал чтение файла CSV, потому что эта таблица очень проста с 3 полями. Все целые числа. Мне не нужна была вся гибкость при импорте типа массива php.

Я создал задачу cron для ежедневного выполнения php-скрипта, который содержит нечто похожее на:

<code>
LOAD DATA LOCAL  INFILE 'file.csv'
REPLACE INTO TABLE content_field_mycckfield
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(vid, nid, field_mycckfield_value);

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

Есть ли какие-то другие шаги, которые я пропускаю? Что-нибудь, о чем я должен знать или быть осторожным?

Нужно ли мне оптимизировать или дефрагментировать эту таблицу после каждого запуска? Или каждый (х) пробегов?

Должен ли я сначала импортировать его в таблицу temp_ для нормализации данных, а затем скопировать / переместить в TABLE content_field_mycckfield?

1 Ответ

4 голосов
/ 20 октября 2010

10000 записей - это большие, но не большие в терминах MySQL, и таблица достаточно проста, так что я не думаю, что вам нужна какая-либо оптимизация. Если данные в таблице надежны и ваш .csv всегда правильно сформирован, то не так много ошибок.

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

Единственное, о чем я могу сказать (в порядке невротизма)

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

Надеюсь, что это поможет!

...