`
datamachine
  • 浏览: 161851 次
社区版块
存档分类
最新评论
阅读更多

数据库有关联语句,可以方便地进行对齐连接运算,但有时数据是存储在文本文件中的,用JAVA直接计算需要写大量循环语句才能实现,代码繁琐且运行低效。使用集算器来辅助Java编程,可以方便高效地解决此类问题。下面我们通过例子来看一下具体作法。

         文本文件emp.txt存储着员工信息,EId等于1的员工不在该文件中。文本文件sOrder.txt存储着订单信息,其SellerId字段和emp中的EId字段相对应,SellerId等于2的订单不在该表中。部分源数据如下:

 

         emp.txt



 

         sOrder.txt



 

现在需要将empNameDeptGender这三个字段对齐到sOrder中,计算结果输出到新文件中。期望的计算结果如下:



 

         集算器代码:



 

         A1格和A2格分别从文本文件中读取数据,并存入两个变量empsOrder。这里使用了函数import,其默认的列分割符是tab,函数选项@t表示将第一行读为字段名。由于例子中只需要emp.txt中的部分字段,因此A1需要以字段名做参数。计算完成后,empsOrder的值如下图:



 

         A3=join@1(sOrder:s,SellerId;emp:e,EId)。函数join执行连接运算,并将两个表改名为se。其中函数选项@1表示左连接,即例子中的要求:将emp对齐到sOrder中。计算后结果如下:



 

         点击蓝色链接可以看到具体的记录,如下:



 

         右连接只是交换对齐的位置,同样可以用集算器来实现。比如将sOrder按照emp对齐,只需要在代码中交换两者的顺序,即=join@1(emp:e,EId;sOrder:s,SellerId),计算结果如下:



 

         全连接也很容易实现,只需要使用函数选项@f,代码是:join@f(sOrder:s,SellerId;emp:e,EId),计算结果如下:



 

         连接运算共有四种,除了上面提到的左连接、右连接、全连接,还有内连接。函数join默认执行内连接,代码是=join(sOrder:s,SellerId;emp:e,EId),计算结果如下:



 

         回到例子中,A4=A3.new(s.OrderID, s.Client, s.SellerId, s.Amount, s.OrderDate, e.Name, e.Dept, e.Gender)这句代码从连接的表中取得需要的字段,组成新的结构化二维表格,计算结果如下:



 

         对齐的工作已经完成,下面将数据输出到新的文件,代码为:=file("E: \\result.txt").export@t(A4)

 

         函数export默认使用tab作为列分割符,函数选项@t表示将字段名输出在第一行。打开result.txt,可以看到内容如下:



 

上述脚本已经完成了所有的对其输出工作,接下来只需在JAVA代码中调用即可。

         //建立esProc jdbc连接

         Class.forName("com.esproc.jdbc.InternalDriver");

         con= DriverManager.getConnection("jdbc:esproc:local://");

         //调用esProc,其中test是脚本文件名

         st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("call test()");

         //执行esProc存储过程

         st.execute();

         只要执行上述JAVA代码,emp就会对齐到sOrder中,并将计算结果输出到result.txt文件。

 

 

         下面将例子稍作改动:按动态的时间段查询sOrder中的数据,并执行同样的对齐操作,最后直接将结果返回JAVA。为了实现这个例子,集算器需要定义两个参数,分别是beginend,代表起止时间。集算器代码如下:



 

         红色部分为改动的代码。

         A2:通过函数selectsOrder进一步过滤,过滤条件为JAVA传来的起止时间,即@begin@end

         A5:将A4中的计算结果输出到JDBC接口。

         JAVA代码也需要进行相应的改动,以便传入参数,并获取计算结果。代码如下:

         Class.forName("com.esproc.jdbc.InternalDriver");

         con= DriverManager.getConnection("jdbc:esproc:local://");

         st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("call test(?,?)");

         st.setObject(1,startTime);

         st.setObject(2,endTime);

         st.execute();

 

         ResultSet set = st.getResultSet();

  • 大小: 41.7 KB
  • 大小: 28.2 KB
  • 大小: 28.7 KB
  • 大小: 45.1 KB
  • 大小: 52.3 KB
  • 大小: 8.6 KB
  • 大小: 32.7 KB
  • 大小: 8.3 KB
  • 大小: 9.5 KB
  • 大小: 8.8 KB
  • 大小: 47.6 KB
  • 大小: 48.5 KB
  • 大小: 50.3 KB
0
0
分享到:
评论

相关推荐

    数据结构课程设计--文本格式化(c编写)

    5. **文本格式化规则**:这可能包括缩进、对齐、换行、去除空白、缩写展开、代码高亮等。理解这些规则并将其转化为可执行的算法是这个项目的核心。 6. **控制结构**:循环(for、while)、条件语句(if、switch)...

    图机器学习峰会-3-4 基于事件图结构的文本-视觉理解.pdf

    为了从对象中心(object-centric)转向事件中心(event-centric),模型需要将图像或视频帧视为一种“外语”,通过解码其内在的事件结构来建立跨媒体的结构化共同空间。这通常涉及构建实体-关系图(entity-relation ...

    C语言入门-leetcode练习之第68题文本左右对齐.zip

    "文本左右对齐"这一题目,其核心是处理字符串的排列和格式化问题。在实际的编程工作中,这类问题可能涉及到文本处理、日志记录甚至是用户界面设计等多个领域。解决这个问题需要对C语言的基本语法、字符串操作以及...

    RichTextBox合并Rtf格式化文本事例

    首先,RTF是一种用于存储格式化文本的文件格式,由Microsoft开发,广泛应用于各种文档处理软件。它的特点是能保留文本的样式信息,如字体、颜色、大小、对齐方式等。在`RichTextBox`中,我们可以直接操作RTF字符串来...

    QT实现的文本编辑器(完整代码)

    这个编辑器具备了常见的文本编辑功能,如剪切、复制、粘贴,文本的对齐方式调整,字体与字号的选择,颜色设定,行间距的修改,以及插入图片和创建表格等。下面将详细讲解这些知识点。 1. **QT框架**: QT库提供了...

    易语言自动制作文本表格

    易语言提供的“自动制作文本表格”功能可以方便地将数组或其他数据结构转换为可视化的文本格式,这在处理大量数据时非常有用。 首先,我们要了解“数组到文本”这一概念。在易语言中,数组是一种存储多个相同类型...

    文本编辑器的设计和实现

    6. **数据库连接技术**:可能涉及到JDBC(Java Database Connectivity),学习如何通过Java程序连接和操作数据库。 7. **多线程**:理解和实现Java的并发编程,创建和管理线程,以及同步机制如`synchronized`关键字...

    java课程设计(文本编辑器)

    这些类之间可以通过继承和接口来组织,实现代码的复用和结构化。 **2. 类、包和接口** 学生需要定义类来封装数据和行为,如`Document`类用于存储文本,`EditorPane`类用于显示和编辑文本。同时,可能需要使用包来...

    了解文本媒体的编码方式.pptx

    文本编辑器如记事本、Word、LibreOffice Writer等,它们允许用户创建、修改和格式化文本。文本处理算法则用于处理文本数据,比如搜索、替换、排序、分词等,这些都是信息技术和大数据分析的基础。 总的来说,理解...

    清华大学精品大数据之数据清洗课程PPT课件(48页)含习题 第5章 文本、web、数据库、增量数据抽取.pptx

    - 数据库数据抽取涉及到从数据库中提取信息,可能包括结构化和半结构化数据。 - 需要配置数据库连接,理解数据表结构,并制定合适的查询语句或使用ETL工具进行抽取。 4. **增量数据抽取** - 增量数据抽取关注的...

    中文医学文本实体关系抽取.zip

    抽取到的实体和关系被整合到知识图谱中,形成一个结构化的知识库。知识图谱是一种数据组织方式,它以节点代表实体,边表示实体间的关系,使得复杂医学信息的查询和推理变得更加便捷。在构建医学知识图谱时,还需要...

    Python-ASTER具有灵活整流功能的注意场景文本识别器

    ASTER的代码结构清晰,便于理解和定制,对于研究人员和开发者来说是理想的起点,他们可以在此基础上进行文本识别算法的改进和优化。 ASTER的核心组件包括以下几个方面: 1. **Transformer Encoder-Decoder**:...

    VB 超长文本换行打印

    - **FormatString**:可以使用`Format()`函数或`String.Format()`方法来格式化字符串,包括添加对齐、填充空格以及换行等。 8. **第三方库** - 如果需要更复杂的文本处理功能,可以引入第三方库,如`iTextSharp`...

    知识图谱构建方法研究.pdf

    本文涉及的数据源包括结构化数据(如数据库)、半结构化数据(如XML文档)和非结构化数据(如纯文本)。结构化数据可以直接映射为实体和关系,半结构化和非结构化数据则需要通过实体抽取和实体链接等技术进行处理。 ...

    基于BERT和TransE筹众创教育资源实体对齐研究+人工智能+知识图谱+预训练模型

    首先,通过改进的TransE模型进行迭代训练,BERT的语义信息在初始化阶段被引入到TransE的向量空间中,增强了文本的初始语义表达。其次,针对属性三元组,使用BERT对属性和属性值进行编码,同时结合翻译模型的思想和TF...

    delphi的ExcelApplication控件excel操作

    除了数据操作,还可以设置单元格的格式,比如字体、颜色、对齐方式等: ```delphi ExcelApp.Cells[1, 1].Font.Name := 'Arial'; ExcelApp.Cells[1, 1].Font.Size := 14; ExcelApp.Cells[1, 1].Font.ColorIndex := 3...

    实验——学生用指导书(1-3)软件工程作业解析.pdf

    在进行实验之前,需要具备基本的 Visio 绘图知识,包括打开模板、添加图形、移动图形、添加文本、将图形连接到一起、格式化图形和保存制图等步骤。 三、实验内容 实验内容包括熟悉 Visio 进行绘图的基本操作、文件...

    Microsoft Office Visio基本操作基本操作

    2. 格式化文本:选中文本,利用顶部的“字体”和“段落”选项调整字体、字号、颜色、对齐方式等。 六、样式与主题 1. 应用主题:在“格式”菜单中,选择“应用主题”来统一图表的整体风格。 2. 修改样式:单击形状...

    Windows常用API

    GetTextAlign是Windows中用于获取文本对齐方式的API,它允许开发者获取当前文本的对齐方式,例如左对齐、右对齐、居中对齐等。 19. SetTextAlign SetTextAlign是Windows中用于设置文本对齐方式的API,它允许开发者...

Global site tag (gtag.js) - Google Analytics