导入大量名录数据到MediaWiki网站的例子

来自Jamesqi
跳转至: 导航搜索

--James Qi 2010年5月17日 (一) 14:23 (CST)

  我们从2006年开始就曾经向MediaWiki中批量导入过数据,最近正在将一些名录数据库导入到新建的名录集网站中,供感兴趣的网友免费浏览。我们以前导入的数据一般都是上千、上万、上十万条,今年在邮编库这个网站曾经导入了上百万条,而名录数据的量更大,可达上千万条,因为来源数据库有上百个,所以重复导入的工作很多,在这里以湖北工商企业名录为例,做一个笔记,供自己以及感兴趣的朋友参考。

导入前

搭建网站

先架设好网站,安装MediaWiki软件及需要的扩展程序,让网址可以访问,这一步就不详细说了。

只说需要修改的几个基本页面:

  • MediaWiki页面:MediaWiki:Refresh、MediaWiki:Pagetitle、MediaWiki:Pagetitle-view-mainpage、MediaWiki:Sidebar、MediaWiki:Sitenotice、MediaWiki:Googlesearch
  • Project页面:Project:免责声明、Project:关于、Project:隐私政策
  • 其它页面:首页、分类、帮助等

数据准备

关键是数据的准备,下面详细来说:

  1. 从.mdb的Aceess文件(或者.xls的Execl文件)导出文本文件,注意字段间隔用制表符;
  2. 用一个自编的VB程序处理导出的文本文件,将标题提取出来,用<title></title>标记;
  3. 用UltraEdit编辑处理后的文本文件,将“|”符号找出来修改为全角的“|”,或者删除乱码的部分;
  4. 将文本文件中的制表符替换为模板参数的间隔符号“|”;
  5. 将需要转义的“&”、“<”和“>”符号替换为“&amp;”、“&lt;”和“&gt;”;
  6. 将在标题中的[]{}改为对应的全角符号,如果是正文中的[]{}可以不修改;
  7. 对照以前的xml文件,批量替换文本文件中的内容,并使用UTF-8/Unix格式保存为xml文件。

这样供导入的xml文件就准备好了。如果xml文件超过几百M,操作起来困难,可以分割为多个小文件。

导入中

导入试验

可以先做一个只有几条数据的小xml文件进行测试,放在maintenance目录下,用php importDump.php test.xml命令来导入。

然后用这些少量的数据来调试需要的模板、分类,做好导入大量数据的预先测试准备工作。

  • 注意1:模板最好先考虑充分,尽量少在后面修改,将必要的判断、分类等也加到里面,一般采用一级模板,避免多级调用。
  • 注意2:分类最好先建好页面,这样导入的数据分类就不会是红色的了。

正式导入

如果没有问题再上传、导入正式数据。看正式数据导入的速度,计算出全部导入需要多长时间。例如:1页/秒的话,24小时就可以导入86400页。通常使用nohup php importDump.php data.xml &命令来挂后台导入。

如果中途出错停止,可以查看出错地方和原因,有针对性修改,然后再次上传、继续导入、直到完成。

导入后

再后面就是一些完善工作,分为网站内部和网站外部的。

内部工作

  1. 修改首页,让更多的分类及数据呈现在上面;
  2. 修改分类调用的模板,带有广告等内部和外部链接;
  3. 修改MediaWiki:Sidebar,添加适当的菜单及相关链接。

注意:导入后查看网站中的数据,如果需要修改模板,则还需要在后台运行:php runJobs.php --maxjobs 10000这样的命令来更新链接。

外部工作

  1. 修改robots.txt,包含提交sitemap的链接,允许访问“/分类”开头的页面,禁止不需要访问的页面;
  2. 修改生成sitemap的.sh文件,定期自动生成网站地图;
  3. 在www.google.com/webmastertools中添加该网站;
  4. 在www.google.com/adsense中添加URL渠道来跟踪收入;
  5. 在www.google.com/analytics中添加配置来跟踪流量。

笔记先做到这里,有新遇到的问题再回头来补充修改。

标签:名录集MediaWiki
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-10-12 22:59:59 全面更新名录集网站模板
  7. 2010-10-07 23:44:03 尝试网络广告以外的收入:数据销售
  8. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  9. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  10. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  11. 2010-07-13 23:55:11 为名录集网站添加提交信息功能
  12. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  13. 2010-06-12 12:27:01 将数据导入MediaWiki进行到底
  14. 2010-05-07 17:58:44 免费在线浏览的国际采购商国外买家名录

关于“导入大量名录数据到MediaWiki网站的例子”的留言:

新增留言

--219.143.205.29 (IP 位置 | 谁是 | 贡献) 2010年10月26日 (二) 20:51 (CST)

留言:请问导入数据库输入命令:php importDump.php test.xml在哪输入??

回复:您好!在Linux或者Windows的命令行输入,先转到maintenance名录下,这里面有个importDump.php的程序。--James Qi 2010年10月27日 (三) 08:54 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年11月10日 (三) 21:51 (CST)

留言:是这样吗:cmd下输入F:\wamp\bin\php\php5.2.6\php.exe F:\wiki\mw\maintenance\importDump.php zh_yuewiki-latest-abstract.xml 可出现提示:warning:fopen <zh_yuewiki-latest-abstract.xml>: failed to open steam: No such file or directory in F:\wiki\mw\maintenance\importDump.php on line 89您遇到过这种情况吗??

回复:您好!这好像就是说zh_yuewiki-latest-abstract.xml这个文件没有找到,你带上这个文件前面的完整目录路径再运行试一试看,例如F:\wamp\bin\php\php5.2.6\php.exe F:\wiki\mw\maintenance\importDump.php F:\wiki\mw\maintenance\zh_yuewiki-latest-abstract.xml 。--James Qi 2010年11月11日 (四) 09:07 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年11月14日 (日) 00:05 (CST)

留言: 哇!您真是太厉害了!又提示:A copy of your installation's LocalSettings.php must exist and be readable in the source directory 是需要设置LocalSettings吗?

回复:您好!下载的原始安装文件解压后是没有LocalSettings.php这个文件的,应该解压后设置Web服务器,然后浏览网站时会自动让您查看config目录下的index.php进行安装,按照屏幕提示输入信息进行安装,就会在config下生成一个LocalSettings.php文件,再把这个文件转移到网站根目录下就可以了。--James Qi 2010年11月15日 (一) 16:53 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年11月19日 (五) 00:42 (CST)

留言:可是安装完mediawiki后已经把LocalSetings.php拷贝到mw目录下了呀?看了很多说明,别人导入数据库一下就成功了,我怎么遇到这么多问题,一个就解决好久好久,也不知道向哪里寻求帮助

回复:您好!MediaWiki这种开源的平台多数时候只好靠自己多摸索了,没有专门的人负责服务指导工作。我也是逐步摸索过来的,你不用太着急,按照屏幕提示逐步来,发现问题多在官方网站www.mediawiki.org找答案,总会解决的。--James Qi 2010年11月22日 (一) 00:27 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年11月23日 (二) 01:45 (CST)

留言:导入维基数据库后,能显示图片吗?mediawiki这个东西我真弄不明白,偶尔搜到了掌上百科这个论坛,使用mdict这个软件,直接把中文维基百科mdx文件放到文件夹下就可以用了,很容易就是没有图片,要是mediawiki建立的维基本地镜像导入.xml文件后也不显示图片,我就可以用mdict这个软件代替了。

回复:您好!Wikipedia的数据库是提供给大家下载的,我几年前也曾经下载过,并导入了部分数据到本地机器上,但却是没有图片,提供下载的地方好像也说过没有提供图片。建议您说的就用mdict来用吧,估计比搞MediaWiki导入容易一些。--James Qi 2010年11月24日 (三) 00:33 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年11月24日 (三) 00:18 (CST)

留言: 又在另一台机器上试了一下cmd下输入命令之后,又显示错误xml import parse failure at line ,col 1 <byte 0,"B2h91AY&SY" ?x> Empty document 错误也忒多了,汗,百度google都搜不到答案,您碰到过这种问题吗?

回复:您好!这好像是说“空白文档”,您看是否文件名错误或者文件格式不对。--James Qi 2010年11月24日 (三) 00:33 (CST)

新增留言

--222.131.57.118 (IP 位置 | 谁是 | 贡献) 2010年11月27日 (六) 12:14 (CST)

留言: 又换了台机器,用了旧一点的数据库,打开wamp,cmd下输入导入命令后,好像是导入成功了显示...164800 <3.6579558416726 pages/sec 3.6579558416726 rev/sec>...现在还在导入,导完之后再打开wiki就可以搜索使用了吗?看了别人的说明好多都要先登录mysql-u -p 之后再导入数据库,祈祷这次对了...您人真是太好了,每条留言都回复,我问的问题都比较傻...

回复:您好!上面显示的是每秒导入3.65个版本,应该是成功了,如果数据量大的话,导入需要很长时间,可以自己根据3.65页/秒计算全部需要的时间。导入之后应该就可以浏览了,内部搜索的话可能还要运行php rebuildtextindex.php,以及在LocalSettings.php中设置允许内部搜索。mysql -u -p是导入.sql的备份文件用的命令,你导入的是.xml的文本,不需要登录mysql。--James Qi 2010年11月28日 (日) 15:54 (CST)

新增留言

--219.143.205.29 (IP 位置 | 谁是 | 贡献) 2010年11月29日 (一) 16:27 (CST)

留言:

数据库导到329800时显示

Set $wgShowExceptionDetails=true;in Localsetings.php to show detailed debuging information<p>; 可是Localsetings.php 里没有$wgShowExceptionDetails,我就直接加了一行$wgShowExceptionDetails=true;再运行rebuildtextindex.php可以显示0,500...这样对吗?怎么知道数据库导完了没有?如何继续导呢?

回复:报错检查后,你可以再次开始导入,前面已经导入过的数据会自动判断跳过,不会重复导入,然后从上次有问题的地方开始继续导入,如果是正常导入完成的,好像会最后显示“Done!”。导入完成后也可以运行rebuildtextindex.php来重新建立文本搜索表,你说的显示0,500是正常的,可以继续运行直到结束。--James Qi 2010年12月2日 (四) 21:41 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2010年12月8日 (三) 17:54 (CST)

留言: 导入数据库中途出现错误的话,是数据库的问题么?导入之后显示很多{}和if之类的是什么原因呢?安装数学公式后,数学公式显示得不清楚

回复:一般都与数据库相关,具体要看报错的内容了。这些{}和if之类的是原来网站中安装了扩展程序或者与你的网站设置了不一样的配置造成的。你的网站中支持数学公式的功能也需要特别安装配置,才能显示原网站中的公式。--James Qi 2010年12月9日 (四) 15:17 (CST)

新增留言

--116.77.135.193 (IP 位置 | 谁是 | 贡献) 2010年12月11日 (六) 17:23 (CST)

留言:您好,请问,如何批量修改分类目录呢?就是[分类:XXX]

回复:如果原来页面中用的[[分类:XXX]],可以采取先导出成.xml文件,然后用文本编辑器打开,查找[[分类:XXX]],全部替换成[[分类:YYY]],然后再导入的办法来实现。--James Qi 2010年12月13日 (一) 11:39 (CST)

新增留言

--219.143.204.223 (IP 位置 | 谁是 | 贡献) 2011年1月17日 (一) 23:38 (CST)

留言: mediawiki安装扩展之后,出现warning:proc_open</dev/null>:failed to open stream :No such file or directory in D:\wamp\www\wiki\includes\paser.php on line 730

您有遇到过类似的情况吗?

回复:您好!已经在新版网站中回复:[1]。--James Qi 2011年1月19日 (三) 13:51 (CST)

</div> 新增相关留言

</div>