你在这里

Drupal批量处理数据的脚本

0
Vote up!

当我们做批处理的时候,可能会有各种个样的方式,比如使用Drupal的Batch API,比如自己写个php脚本,循环处理,比如写个drush命令,比如利用Jenkins循环调用自身的方式,可以利用多线程技术,甚至是换一个思路用其他语言比如Node.js来做批处理。

我这里当然不会介绍这么多,只是说一下我遇到的一个场景的解决方法。

场景描述:

新导入了一张表,里面有一些字段里有乱码(注,有近百个字段),我需要遍历表格中有乱码的每一列,将乱码去掉。当然我们有很多方法可以实现,这里我是结合Drush和SQL,将问题解决的。

需要写一个Bash脚本,放在Drupal安装目录
BASH:
#!/bin/bash

query="Select COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS Where table_name = 'TABLE_PROCESSING' AND table_schema = 'YOUR_DB' AND (column_name LIKE 'intro_%' OR column_name = 'history_college_entry') "
for table_name in `drush sql-query "$query" --extra=--skip-column-names`;
do
echo "update TABLE_PROCESSING set $table_name=REPLACE($table_name,'','');"
drush sql-query "update TABLE_PROCESSING set $table_name=REPLACE($table_name,'','');"
done;