当前位置: 首页 > 工具软件 > DataCleaner > 使用案例 >

DataCleaner---10.2 数据存储

须曜文
2023-12-01

10.2 数据存储

可以在元素标签 < datastore-catalog > 下的配置文件中配置数据存储。下面几节将详细介绍特定类型的数据存储。

数据库(JDBC)连接

下面是一些常见数据库类型的示例。

提示!
DataCleaner用户界面使得计算连接属性的url(连接字符串)和驱动程序类部分变得更加容易。如果你还不知道这些属性的话,这是一个很好的开始。

MySQL

<jdbc-datastore name="MySQL datastore">
 <url>jdbc:mysql://hostname:3306/database?defaultFetchSize=-2147483648</url>
 <driver>com.mysql.jdbc.Driver</driver>
 <username>username</username>
 <password>password</password>
 <multiple-connections>true</multiple-connections>
</jdbc-datastore>

Oracle

<jdbc-datastore name="Oracle datastore">
 <url>jdbc:oracle:thin:@hostname:1521:sid</url>
 <driver>oracle.jdbc.OracleDriver</driver>
 <username>username</username>
 <password>password</password>
 <multiple-connections>true</multiple-connections>
</jdbc-datastore>

Microsoft SQL Server
与Microsoft SQL server的典型连接如下所示:

<jdbc-datastore name="MS SQL Server datastore">
 <url>jdbc:jtds:sqlserver://hostname/database;useUnicode=true;characterEncoding=UTF-8</url>
 <driver>net.sourceforge.jtds.jdbc.Driver</driver>
 <username>username</username>
 <password>password</password>
 <multiple-connections>true</multiple-connections>
</jdbc-datastore>

但是,如果要使用基于实例名称的连接,则必须运行SQL Server Browser服务,然后可以包含实例参数:下面是连接到SQLEXPRESS实例的示例:

 <url>jdbc:jtds:sqlserver://hostname/database;instance=SQLEXPRESS;useUnicode=true;characterEncoding=UTF-8</url>

逗号分隔值(CSV)文件

这是一个CSV文件数据存储的例子

<csv-datastore name="my_csv_file">
 <filename>/path/to/file.csv</filename>
 <quote-char>"</quote-char>
 <separator-char>;</separator-char>
 <encoding>UTF-8</encoding>
 <fail-on-inconsistencies>true</fail-on-inconsistencies>
 <header-line-number>1</header-line-number>
</csv-datastore>

固定宽度值文件

具有固定宽度值的文件可以通过两种方式进行注册—要么对所有列使用单个固定宽度大小,要么使用单个值宽度。
下面是一个为所有列指定固定宽度的示例:

<fixed-width-datastore name="FIXED-WIDTH-ALL-COLUMNS">
 <filename>/path/to/the/file.txt</filename>
 <width-specification>
  <fixed-value-width>20</fixed-value-width>
 </width-specification>
 <encoding>UTF-8</encoding>
 <header-line-number>1</header-line-number>
 <fail-on-inconsistencies>true</fail-on-inconsistencies>
 <skip-ebcdic-header>false</skip-ebcdic-header>
 <eol-present>true</eol-present>
</fixed-width-datastore>

下面是一个单独(2列)宽度规格的示例:

<fixed-width-datastore name="FIXED-WIDTH-2-COLUMNS">
 <filename>/path/to/the/file.txt</filename>
 <width-specification>
  <value-width>20</value-width>
  <value-width>30</value-width>
 </width-specification>
 <encoding>UTF-8</encoding>
 <header-line-number>1</header-line-number>
 <fail-on-inconsistencies>true</fail-on-inconsistencies>
 <skip-ebcdic-header>false</skip-ebcdic-header>
 <eol-present>true</eol-present>
</fixed-width-datastore>

下面是一个EBCDIC文件的示例:

<fixed-width-datastore name="FIXED-WIDTH-EBCDIC">
 <filename>/path/to/the/file.ebc</filename>
 <width-specification>
  <value-width>2</value-width>
  <value-width>10</value-width>
 </width-specification>
 <encoding>IBM01148</encoding>
 <header-line-number>0</header-line-number>
 <fail-on-inconsistencies>true</fail-on-inconsistencies>
 <skip-ebcdic-header>true</skip-ebcdic-header>
 <eol-present>false</eol-present>
</fixed-width-datastore>

Excel表格 数据存储

这是一个Excel表格数据存储的示例:

<excel-datastore name="my_excel_spreadsheet">
 <filename>/path/to/file.xls</filename>
</excel-datastore>

XML文件数据存储

定义XML数据存储既可以用简单的(自动映射的)方法,也可以用高级的(性能和内存效率更高的)方法。
简单的方法就是用文件名定义xml数据存储,如下所示:

<xml-datastore name="my_xml_datastore">
 <filename>/path/to/file.xml</filename>
</xml-datastore>

当文件大小较小且层次结构不太复杂时,这种XML数据存储就可以工作。它的缺点是,它试图自动检测一个适合表示XML内容的表结构(这是一个树结构,而不是真正的表)。
为了解决这个问题,还可以定义自己的表结构,在其中指定构成行的XPath和行中的值。举个例子:

<xml-datastore name="my_xml_datastore">
 <filename>/path/to/file.xml</filename>
 <table-def>
   <rowXpath>/greetings/greeting</rowXpath>
   <valueXpath>/greetings/greeting/how</valueXpath>
   <valueXpath>/greetings/greeting/what</valueXpath>
 </table-def>
</xml-datastore>

数据存储定义了一个表,其中每个记录都定义为与 XPath “/greetings/greeting” 匹配的元素。该表有两列,由“how”和“what”元素表示,它们是行路径的子元素。
有关定义XML数据存储的表模型的XPath表达式的更多详细信息,请参阅MetaModel的教程(MetaModel是用于在DataCleaner中读取数据的数据访问库)。

ElasticSearch 数据存储

这是ElasticSearch索引数据存储的示例:

<elasticsearch-datastore name="my_elastic_search_index">
 <hostname>localhost</hostname>
 <port>9300</port>
 <cluster-name>my_es_cluster</cluster-name>
 <index-name>my_index</index-name>
</elasticsearch-datastore>

MongoDB 数据存储

这是一个完全指定的MongoDB数据存储的示例,示例表结构基于两个集合。

<mongodb-datastore name="my_mongodb_datastore">
 <hostname>localhost</hostname>
 <port>27017</port>
 <database-name>my_database</database-name>
 <username>user</username>
 <password>pass</password>
 <table-def>
   <collection>company_collection</collection>
   <property>
    <name>company_name</name>
    <type>VARCHAR</type>
   </property>
   <property>
    <name>customer</name>
    <type>BOOLEAN</type>
   </property>
   <property>
    <name>num_employees</name>
    <type>INTEGER</type>
   </property>
   <property>
    <name>address_details</name>
    <type>MAP</type>
   </property>
 </table-def>
 <table-def>
   <collection>person_collection</collection>
   <property>
    <name>person_name</name>
    <type>VARCHAR</type>
   </property>
   <property>
    <name>birthdate</name>
    <type>DATE</type>
   </property>
   <property>
    <name>emails</name>
    <type>LIST</type>
   </property>
 </table-def>
</mongodb-datastore>

如果省略了主机名和端口元素,本地主机:27017假设的端口。
如果省略用户名和密码元素,将建立匿名连接。
如果没有 table-def 标签元素,将检查数据库,并根据每个集合的前1000个文档自动检测表定义。

CouchDB 数据存储

这是一个完全指定的CouchDB数据存储的示例,示例表结构基于两个CouchDB数据库。

<couchdb-datastore name="my_couchdb_datastore">
 <hostname>localhost</hostname>
 <port>5984</port>
 <username>user</username>
 <password>pass</password>
 <ssl>true</ssl>
 <table-def>
   <database>company_collection</database>
   <field>
    <name>company_name</name>
    <type>VARCHAR</type>
   </field>
   <field>
    <name>customer</name>
    <type>BOOLEAN</type>
   </field>
   <field>
    <name>num_employees</name>
    <type>INTEGER</type>
   </field>
   <field>
    <name>address_details</name>
    <type>MAP</type>
   </field>
 </table-def>
 <table-def>
   <database>person_collection</database>
   <field>
    <name>person_name</name>
    <type>VARCHAR</type>
   </field>
   <field>
    <name>birthdate</name>
    <type>DATE</type>
   </field>
   <field>
    <name>emails</name>
    <type>LIST</type>
   </field>
 </table-def>
</couchdb-datastore>

如果省略了主机名和端口元素,本地主机:5984假设的端口。
如果省略用户名和密码元素,将建立匿名连接。
如果 “ssl” 标签元素为false或遗漏,则将使用常规HTTP连接。
如果没有 table-def 标签元素,则将检查数据库,并根据每个数据库的前1000个文档自动检测表定义。

Composite datastore(复合数据存储)

这是一个复合数据存储的示例。它包含来自另外两个数据存储的数据:数据存储1和数据存储2。

<composite-datastore name="my composite">
<datastore-name>Datastore 1</datastore-name>
<datastore-name>Datastore 2</datastore-name>
</composite-datastore>

点这儿返回DataCleaner文档主目录

 类似资料: