一,业务需求
我们单位用了很多书生公司的文件,例如sep,gd,gw等,需要提取这些文档的内容,插入到数据库,这样才能做内容检索。
我们这里总计有1.6万个sep文档(也有说法是6万个),4.5万个gd文档,要自动化批量提取。
一是对存量文件,得要实现批量提取。
二是对于每日新增文件,得要定时执行提取。
二,具体场景
目前把文档存在一台linux服务器上,数据保存在hive里。
书生公司提供了一个网页,能够手动提取一个文件,适用于sep和gd,方法是一样的。
如果使用网页版的话,操作流程:
1,c#连接hive,读取空的sep(gd)文档列表。
2,写个ftp程序,从linux上下载文件到本地。
3,使用网页解码,获取文件内容。(模拟网页操作,实现持续自动化操作网页)
4,将sep(gd)文档内容插入到hive。
5,删除本地文件。
难点和思路:
1,网页解码服务。如果提供一个jar包或者dll,只要调用一下就可以了,那会很方便。但是呢,现在提供的是网页,那就麻烦了。得要增加一个自动操作网页的方法;正好,之前做过类似的事情,操作网页自动化登录,现成可用。
思路:
(1),本地配置服务,替换配置文件,使得解码可以进行。
书生公司会提供两个文件:GrantFile.xml,DataIO_Soft.dll,将这两个文件替换到sursen/sedcore文件夹下,这样网页才可以实现解码。(去年如果就给我们提供这个方法,就不会等那么久了。。)
(2),建立解码网站,配置到tomcat里,虽然只有一个页面。(^_^)
(3),c#客户端,建立一个WebBrowser,模拟自动操作。(这里感谢万老师的例子,以前都不知道还能自动点击。)
2,c#连接hive。正好,19年10月份的时候做过,采用ODBC的方式,现成可用。
这就是积累,所以,得要坚持做一件事情,这样才好,会越来越轻松。
3,从linux服务器下载文件。手工操作的话,是使用ftp的方式;java有sms的方式,查了下,也咨询了同事,可以使用sftp的方式。(又获得一个技能点)
三,详细设计
(一),c#连接hive,参考以前的文章。
(二),sftp下载文件。
ftp协议,这是个专门用于传输文件的协议,跨平台跨系统,有专门的手工客户端,也有程序包,非常实用。(这里感谢周老师提供的资料,直接使用了。)