Updating 10,000 cck fields daily in drupal
我们的一个站点有大约 10,000 个节点。在每个节点中,都有一个简单的 cck 文本/整数字段。这个整数每天都在变化,所以它们需要每天更新。整数范围为 1 到 20000000。cck 字段跨越所有内容类型,因此在数据库中有自己的表。我们不使用修订。我选择让它读取一个 csv 文件,因为这个表非常简单,有 3 个字段。所有整数。我不需要进行 php 数组类型导入的所有灵活性。
我创建了一个 cron 作业来每天执行一个 php 脚本,其中包含类似于:
1 2 3 4 5 6 | LOAD DATA LOCAL INFILE 'file.csv' REPLACE INTO TABLE content_field_mycckfield FIELDS TERMINATED BY ',' LINES TERMINATED BY '\ ' (vid, nid, field_mycckfield_value); |
在脚本结束时,它会统计导入了多少条记录,报告成功和错误。
该文件低于公开,所有爵士乐。
我还缺少其他步骤吗?有什么我应该注意或小心的吗?
我应该让它在每次运行后优化或整理这张表吗?还是每 (x) 次运行?
我是否应该先将其导入 temp_ 表以规范化数据,然后将其复制/移动到 TABLE content_field_mycckfield 中?
10,000 条记录很大,但在 MySQL 方面并不庞大,而且该表足够简单,我认为您不需要任何优化。如果表中的数据是可靠的,并且您的 .csv 格式始终正确,则不会有太多问题。
另一个问题是您的导入过程是否引发错误。如果 .csv 甚至有可能包含不正确的列引用、丢失的逗号等,那么您在临时表中测试所有内容的想法肯定是一个好主意。
我唯一能想到的其他事情是(按照神经质的顺序)
- 在夜间或您的站点未使用时执行此操作
- 让 PHP 脚本捕获错误并将每次运行的结果通过电子邮件发送给您
- 让脚本备份表,运行 .csv,检查错误,如果有错误,则通过电子邮件发送给您并同时恢复备份
希望对您有所帮助!