我们的一个站点有大约10000个节点。在每个节点中,都有一个简单的cck文本/整数字段。这个整数每天都在变化,所以它们需要每天更新。整数范围从1到20000000。cck字段跨越所有内容类型,因此它在数据库中有自己的表。我们不使用修订。我选择让它读取csv文件,因为这个表非常简单,有3个字段。所有整数。我不需要做一个PHP数组类型导入的所有灵活性。
我创建了一个cron作业,每天执行一个php脚本,其中包含类似的内容:


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_u表以规范化数据,然后将它复制/移动到table content_field_mycckfield中吗?

最佳答案

10000条记录很大,但在mysql中并不是很大,而且表非常简单,我认为您不需要进行任何优化。如果表中的数据是可靠的,并且.csv的格式总是正确的,那么就不会有太多错误。
另一个问题是导入过程是否抛出错误。如果.csv包含不正确的列引用、丢失逗号等的可能性极小,那么测试临时表中的所有内容无疑是一个好主意。
我唯一能想到的是(按神经质的顺序)
在夜间或网站未使用时执行此操作
让php脚本捕捉错误并将每次运行的结果发送给您
让脚本备份表,运行.csv,检查错误,如果有错误,则向您发送电子邮件,同时还原备份
希望这些都有帮助!

关于database - 每天在Drupal中更新10,000个CCK字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3975882/

10-12 05:34