集算器协助java处理结构化文本之条件过滤.pdf

集算器协助java处理结构化文本之条件过滤.pdf

ID:52767906

大小:512.27 KB

页数:3页

时间:2020-03-30

集算器协助java处理结构化文本之条件过滤.pdf_第1页
集算器协助java处理结构化文本之条件过滤.pdf_第2页
集算器协助java处理结构化文本之条件过滤.pdf_第3页
资源描述:

《集算器协助java处理结构化文本之条件过滤.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、集算器协助Java处理结构化文本之条件过滤直接用Java实现文本文件中数据按条件过滤会有如下的麻烦:1、文件不是数据库,不能用SQL访问。当过滤条件变化时需要改写代码。如果要实现象SQL那样灵活的条件过滤,则需要自己实现动态表达式解析和求值,编程工作量非常大。2、文件太大时不能一次性装入内存处理,而采用逐步读入方式在考虑到性能时又会涉及到文件缓冲区管理、拆行计算等复杂编程。使用集算器来辅助Java编程,这些问题都不需要自己写代码解决。下面我们通过例子来看一下具体作法。文本文件employee.txt中保存了员工数

2、据。我们要读取员工信息,从中找出1981年1月1日(含)之后出生的女员工。文本文件empolyee.txt的格式如下:EIDNAMESURNAMEGENDERSTATEBIRTHDAYHIREDATEDEPTSALARY1RebeccaMooreFCalifornia1974-11-202005-03-11R&D70002AshleyWilsonFNewYork1980-07-192008-03-16Finance110003RachelJohnsonFNewMexico1970-12-172010-12-01S

3、ales90004EmilySmithFTexas1985-03-072006-08-15HR70005AshleySmithFTexas1975-05-132004-07-30R&D160006MatthewJohnsonMCalifornia1984-07-072005-07-07Sales110007AlexisSmithFIllinois1972-08-162002-08-16Sales90008MeganWilsonFCalifornia1979-04-191984-04-19Marketing1100

4、09VictoriaDavisFTexas1983-12-072009-12-07HR300010RyanJohnsonMPennsylvania1976-03-122006-03-12R&D1300011JacobMooreMTexas1974-12-162004-12-16Sales1200012JessicaDavisFNewYork1980-09-112008-09-11Sales700013DanielDavisMFlorida1982-05-142010-05-14Finance10000…实现的思路

5、是:用Java程序调用集算器脚本,读取和计算数据,之后将结果以ResultSet的方式返回给Java程序。由于集算器支持动态表达式解析和求值,使得Java程序可以像使用sql那样,灵活的过滤文本文件中的数据。例如,我们需要查询1981年1月1日(含)之后出生的女员工,esProc程序可以从外部获得一个输入参数“where”作为条件,如下图:where是个字串,取值是:BIRTHDAY>=date(1981,1,1)&&GENDER=="F"。esProc代码如下:A1=file("D:\employee.txt

6、").import@t()2=A1.select(${where})3resultA2A1:定义一个file对象,读入数据,第一行是标题,字段分隔符默认是tab。esProc的集成开发环境可以直观的显示出导入的数据,如上图右边部分。A2:按照条件过滤。这里使用宏来实现动态解析表达式,其中的where就是传入参数。集算器先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行。这个例子中最终执行的是:=A1.select(BIRTHDAY>=date(1981,1,1)&&GENDER=="F")

7、。A3:向外部程序返回符合条件的结果集。过滤条件发生变化时不用改变代码,只需改变where参数即可。例如,条件变为:查询1981年1月1日(含)之后出生的女员工,或者NAME+SURNAME等于”RebeccaMoore”的员工。Where的参数值可以写为:BIRTHDAY>=date(1981,1,1)&&GENDER=="F"

8、

9、NAME+SURNAME=="RebeccaMoore"。执行之后,A2中的结果集如下图:在Java程序中使用esProcJDBC调用这段程序获得结果的代码如下:(将上述esProc

10、程序保存为test.dfx)://建立esProcjdbc连接Class.forName("com.esproc.jdbc.InternalDriver");con=DriverManager.getConnection("jdbc:esproc:local://");//调用esProc程序(存储过程),其中test是dfx的文件名st=(com.esproc.jdbc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。