2010年5月17日我在日志中写了一篇《导入大量名录数据到MediaWiki网站的例子》,详细记录了导入数据的过程步骤,后面进行了不少导入工作,也都是基本上按照那个步骤来的。
前段时间在国外的空间中安装了Drupal以及一些模块,进行了数据导入的尝试工作,这个月又在国内的服务器上设置了Drupal平台的新站jamesqi.com和adsensebook.cn,明年初将会开始导入大量数据的工作。这几天还在让技术部的同事帮忙修改php模板来实现一些功能。为了让自己后面的工作更清晰,也将过程记录如下:
1 导入前
1.1 搭建安装
先架设好网站,安装Drupal软件及需要的模块,让网址可以访问。
一般安装以下的模块:
- 核心模块
- 核心可选模块
- pathauto: 自动生成路径别名
- token: 被其他模块调用
- cck: 自定义字段
- views: 视图(暂未用)
- xmlsitemap: 生成sitemap提交给搜索引擎
- boost: 文件缓存
- node import: 导入txt, csv文件到页面
- contemplate: cck输出模板
- taxonomy import/export via xml: 导出、导入分类(暂未用)
- taxonomy menu: 用户生成分类菜单
- taxonomy manager: 用于分类管理、批量增加
- page title: 自定义页面标题
另外有几个方便管理和编辑的模块,也可以根据需要安装:
- admin_menu: 管理菜单
- ckeditor(暂未用)
- imce(暂未用)
- imce_wysiwyg(暂未用)
- wysiwyg(暂未用)
- capcha: 验证码
- external links: 判断处理外部链接
- Devel: 开发调试
如果是导入一系列的数据做网站群,可以只安装一套Drupal系统,采用多网站共享的安装方式。如果是站群,可以考虑这几个方面:
- 一组类似的子站群只需要安装一套Drupal程序以及模块
- 一组类似的子站群建议使用同一MySQL服务器中不同的数据库,特别是数据量非常大的时候,便于分别备份等操作
- 用户帐号、密码共享的问题,待解决
1.2 初始设置
安装完成后进行基本的设置,例如:
- 站点信息设置,包括名称、口号、使命、页脚、首页等设置;
- 站点主题选择,以及颜色、logo、favicon.ico等设置;
- 区块设置,嵌入Google DFP, Analytics等代码;
- 角色添加、权限设置;
- 留言设置,验证码方式设置;
- 在线联络提交邮件的分类设置、外部SMTP设置。
另外,每种添加的新模块都需要设置权限以及设置配置,例如:
- autopath: 路径别名自动生成的规则;
- pagetitle: 各种类型页面的标题构成规则;
- boost: 缓存的各种设置;
- xmlsitemap: 生成sitemap的规则。
1.3 准备数据
- 从.mdb的Aceess文件(或者.xls的Execl文件)导出文本文件,注意字段间隔用制表符;
- 如果有需要修改的地方,可以批量修改替换;
- 注意编辑保存为UTF-8字符形式,以免汉字不被Drupal识别;
- 在Drupal中新建内容类型,例如:机器可读名称“minglu”,人类可读名称“名录”;
- 在Drupal中的CCK模块设置新的字段,例如:公司名称、公司类型、法定代表人等,可全部用text类型字段,可以先手工新建内容类型,然后导入从其他站导出的相同结构字段列表;
- 在Drupal中设置需要的Taxonomy词汇表和术语,可用Taxonomy Import/Export via XML批量导入或者用Taxonomy Manager批量添加。
2 导入中
2.1 导入实验
可先用少量数据来做导入实验,例如10条、100条数据,只需要很短时间可以完成导入,检查是否有报错、字段设置是否合理等。
2.2 正式导入
在Drupal后台用node import来导入.cvs或者.txt数据,第一行为标题,还要设置标题对应的CCK字段,然后开始导入。如果数据量大,例如10万条、100万条数据,需要较长时间完成,实测大约1秒5条左右。
3 导入后
3.1 内部工作
- 修改字段设置、显示设置、字段权限;
- 修改Content Template,达到需要的变换效果;
- 编写php程序来更新node_term表,将页面进行归类;
- 生成taxonomy菜单,添加主链接菜单等其它菜单项;
- 如果需要,修改node.tpl.php和garland.info来添加新区域(Region)来放置区块(Block);
- 如果需要,模拟蜘蛛爬去,提前批量生成缓存文件;
- 检查内部搜索,批量生成文本索引。
3.2 外部工作
- 修改robots.txt,包含提交sitemap的链接,允许访问“/分类”开头的页面,禁止不需要访问的页面;
- 修改sitemap的设置,定期自动生成网站地图;
- 在www.google.com/webmastertools中添加该网站;
- 在www.google.com/adsense中添加URL渠道来跟踪收入;
- 在www.google.com/analytics中添加配置来跟踪流量;
- 服务器crontab设置,定期执行cron。
笔记先做到这里,有新遇到的问题再回头来补充修改。
评论6
很好,受益
很好,受益Drupal 7搭建稍有不同
我整理成这样几步:
其中粗体字的几个步骤比较麻烦,需要人工花费较多时间精力,其它部分可以尽量多用drush来批量处理。
我在Drupal 7与Drupal 6导入过程中最大的区别是用的导入模块不一样,Drupal 7下的Feeds有两个大的优点:
对于术语字段可以自动分类(所以需要先建术语表、再设置内容类型中对应的字段、再在Feeds map中设置导入数据的对应),不需要导入后运行自己写的PHP程序来归类;
新增导入内容更新功能,用了GUID字段,避免重复导入。
怎么使用导入内容更新功能
新增导入内容更新功能,用了GUID字段,避免重复导入。 这个功能是怎么实现更新的,试了很多次也没摸索出来,求大神指教Feeds导入内容避免重复很容易啊
Feeds导入内容避免重复很容易啊,你添加了GUID字段是对的,在做字段映射mapping的时候,将GUID设置成Used as unique,再就是“Node processor 的设置”中每个选项的意思都看明白、不选错就可以。
drupal8中,怎么导入大量用户
drupal8中,怎么导入大量用户,而不是管理员一个个手动注册建议调用API来实现
我查了一下,drupal 7里面导入页面或者用户的模块https://www.drupal.org/project/feeds 目前还没有推出drupal 8的版本,我建议自己查看drupal 8的API文档,通过编程调用API的方式来批量添加,虽然不如安装一个模块用起来方便,但至少这是一种可行的办法。