如何快速将Metadata导入MySource Matrix系统
Category: Linux, 网站开发标签:metadata, mysource matrix, php
在本地的PWC进行的他们公司对外和局域网的网站建设断断续续已经进行了一年多了, 跟很多澳洲政府和教育相关部门一样, PWC的新INTERNET和INTRANET网站都是在MySource Matrix这个CMS系统上进行搭建的. 这个系统的特点就是…..复杂, 它包含了太多的功能, 感觉他的终极目标就是让一个不懂PHP的人也能借助这个系统和HTML/CSS/JS知识构建一个功能强大的网站. 但是降低门槛的同时也就提高了操作的繁琐性, 由于我们做为外聘的开发人员不能自由访问修改服务器上的代码文件, 而MATRIX系统本身虽然开源但其开发团队在代码开发文档方面十分小气(SQUIZ主要要靠出售技术支持为收入), 导致很多可以简单靠代码完成的功能不得不靠MATRIX繁琐的后台各种ASSET来拼凑. 而这系统本身说实话也十分缓慢, 甚至于ASSET LISTING仅仅是排序分类仅仅一千多个PDF图纸文件就要花上整整一分钟才能完成….而进行一系列SQL语句的优化以后其实只需要 半秒….
话题扯远了好像…….闲话归闲话, 一年多来也算在这个系统的使用上积累了些技巧和经验, 现在就分享一则.
PWC面向公众的网站很重要的一部分就是他们 的Standard Drawings查询系统, 由水电公司的一班POWER SUPPLY和WATER SEWERAGE的工程师维护. 主要就是提供一千多份水电相关零部件和设备的PDF图纸给用户查询. 当初这个系统是纯手工由HTML和CSS构建的, 导入到Matrix系统以后基本是大走样, 当时最头疼的问题之一就是一千多个PDF文件, 每个文件都有两个附属的数据要加上, 我们可以把属性以METADATA的形式加到所有PDF类文件上, 但是这些数据要怎么录入? 手动的话基本得把活人弄死, 而MATRIX本身的导入工具又无法完成类似任务, 跟同事讨论半天没啥结果, 感觉只能动动外部用PHP直接向数据库导入的方法了. 但是从来没对MATRIX的数据直接操作过, 而且话说MQTRIX用的POSTGRESS数据库我也没用过, 就这么愣写, 好像有点二叉… 无奈之下求助MATRIX的论坛, 别说还真就有高人通过修改MATRIX本身带的一个导入工具写出了把METADATA导入数据库的PHP程序. 代码本身刚下载下来的时候不适用, 因为原代码是以asset ID在数据库中查询的,但是我当时的数据只有asset文件名,于是我自己修改了一下总算是可以成功导入了, 但是由于导入时以asset文件名为准, 有时便会出现冲突的情况, 我就又改了下代码, 这样冲突的时候就可以记下编号, 去MATRIX系统里进行修正. -_-
导入前的准备工作也比较无奈, 原来的数据都是网页形式, 而导入程序需要CSV格式的数据, 我只得先把网页上数据转成EXCEL格式再转存CSV…. 转换时候还闹出些笑话, 比如有的日期没写月份, 于是转出来的EXCEL文件里写着日期的年份是1905年……..-____-
程序具体的使用我就用我的导入经验举例了.
- 需要准备的CSV数据文件的格式为: [Asset文件名], [Metadata Schema ID], [Metadata Schema 数据] —— 后面两个metadata schema的id和数据想放多少放多少, 中间放逗号 (文章最后有附示例文件)
- WINSCP把PHP文件和CSV数据放至服务器根目录
- PUTTY登入服务器ROOT.
- 输入命令格式: php import_metadata.php [Matrix所在的目录] [csv file name]
- 回车导入开始.
- 如果有冲突会有提示, 把ID记下来以便过后调整, 然后按C继续.
全部一千多个PDF花了将近半小时导入成功. 速度慢了点, 但是毕竟比手工录入已经快了不知道多少倍了. 在这里感谢代码的原修改者Tim Everist.
希望这篇文章对有相关需要的朋友有所帮助.
附:
用于导入METADATA的PHP程序及示例文件下载:
注意, 对MATRIX数据库的直接操作一定要谨慎进行, 对于本程序造成的任何后果本人不负任何责任.