实施指南 › 适配器配置规范 › SQL 接口部分
SQL 接口部分
SQL 适配器可用来通过 SQL 语句从数据库中检索数据。
SQL 接口定义了到数据库的连接和用于检索数据的查询,详细信息如下所示:
XML 结构:
< DataSourceInterface >
<ConnectionString ConnectionTimeout="60" QueryTimeout="30">
<![CDATA[ Driver={Microsoft Access Driver (*.mDataBase)};DataBaseq=d:\Oblicore\database1.mdatabase; ]]>
</ConnectionString>
<QueryCollection>
<Query QueryName="cases" InputFormat="cases" SleepTime="3600">
<SelectStatement AutoCompleteQuery="yes">
select dateclosed,callid,dateopened,companyname,priority,closedmn,responsemn
from calls where dateclosed is not NULL
</SelectStatement>
<QueryKeyFields>
<KeyField Name="dateclosed" Sort="asc"/>
<KeyField Name="callid" Sort="desc"/>
<SelectInitialValues>
Select min(dateclosed) , 'min date' from calls
</SelectInitialValues>
</QueryKeyFields>
</Query>
<Query QueryName="contracts" InputFormat="contracts" SleepTime="3600">
<ConnectionString>
<Segment Type="text"
Text=" Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; DataBaseq="/>
<Segment Type="File">
<File Path="d:\Oblicore " NamePattern="Availabilty_*.XLS>
</Segment>
<Segment Type="text" Text=";"/>
</ConnectionString>
<SelectStatement AutoCompleteQuery="yes">….</SelectStatement>
<QueryKeyFields>…..</QueryKeyFields>
</Query>
</QueryCollection>
</DataSourceInterface>
- ConnectionString - 用于访问源数据库的连接字符串。
可在 DataSourceInterface 元素和/或 Query 元素中定义 ConnectionString。 DataSourceInterface 元素中的 ConnectionString 定义是默认的,并且它仅用于没有 ConnectionString 定义的查询。
连接字符串可在一个字符串中或通过段来定义。 如果 ConnectionString 元素不包含 Segment 元素,将采用 ConnectionString 元素文本中的连接字符串。 如果它至少包含一个 Segment 元素,则会从该元素串联连接字符串。
有两个段类型。 第一种类型为文本,包含串联到连接字符串的文本。 第二种类型为文件,包含带或不带通配符的文件名。 文件段仅可出现一次,其中包含定义如何处理所读取文件的其他属性。
- ConnectionTimeout -(可选)。 正整数,指示等待连接打开的时间(以秒为单位)。 值 0 表示无限期地等待,直到打开连接。 默认值为 15 秒。
注意:部分提供商不支持此功能。
- QueryTimeout -(可选)。 正整数,指示等待查询执行的时间(以秒为单位)。 值 0 表示无限期地等待,直到执行完成。 默认值为 30 秒。
注意:部分提供商不支持此功能。
- Segment - 指定段属性。
- Type - (可选)段类型 (text/file)
- Text - 文本段的文本。
- File - 指定文件属性
- Path - 到源数据文件的位置的路径。
- NamePattern - 指定源数据文件名,可以使用通配符。
- InitialFileName -(可选)。 告知用户从哪个文件开始搜索以及要搜索的模式。
- UsePath -(可选)[yes/no] 如果设为“yes”,文件路径被串联到连接字符串。
- UseFileName -(可选)[yes/no]。如果设为“yes”,文件名被串联到连接字符串(Excel 文件所需)。
- UpdateSchemaFile -(可选)[yes/no]。 如果设为“yes”,适配器将使用当前文件名更新 schema.ini 文件。
注意:仅在您希望适配器更改 schema.ini 文件(文本文件的数据库)时才使用此属性。
- QueryCollection - 查询的集合(在一个适配器中可以定义多个查询)。
- PreliminaryCheck -(可选)[yes/no]。 适配器在连接到数据库时将检查查询。 如果将此属性设为“no”,适配器将通过执行查询而且不做任何更改来执行检查,稍后适配器还会在返回记录上运行而且不会再次读取它们。 如果设为“yes”,适配器将把 select 语句中的每个“where”字符串都替换为“where 1=2 and”,然后才执行查询。 如果您希望在适配器开始在记录上运行之前检查所有查询以及该添加项可显著缩短查询时间时,请使用此选项。 注意 - 有些提供程序不优化查询过程,查询合法时,执行时间与在没有添加项的情况下所花费的时间相同。
- ExternalCommand -(可选)。 在适配器开始新的读取周期之前执行的外部命令。
- Command - 要执行的批处理文件的名称。
- SleepTime - 正整数,指示再次运行命令之前等待的时间(以秒为单位)。
- Query - 指定查询属性。
- QueryName - 查询的名称。
- IsActive -(可选)[yes/no]。 如果设为“no”,适配器不会从该文件读取记录。
- InputFormat - 与此查询关联的 InputFormat。 适配器使用 InputFormat 从源记录提取数据。
- SleepTime - 适配器暂停以等待新数据到达的时间(以秒为单位)。
- Critical -(可选)[yes/no]。 如果设为“yes”,当适配器在查询中发现错误时,它将立即停止。 如果是已解决的已知错误,只是尚未更改配置文件,可以使用选项“no”。
- TransactionMode -(可选)[implicit/explicit]。 如果设为 explicit(显式),适配器将在查询之前启动数据库事务。 此选项解决了大量复杂查询中的几个问题。
- RollbackSegementName -(可选)。 定义适配器使用的回滚段。 否则,数据库将选择回滚段。
- SelectStatement - 包含要在源数据库中执行的选定语句。
- AutoCompleteQuery - [yes/no]。 如果设为“yes”,适配器将按如下所述自动串联一个 where 语句到指定查询中:
- 基于键字段创建仅引入新值的 where 语句。
- 基于键字段对结果语句进行排序。
- QueryKeyFields - 定义字段以开始下一次数据检索:
- KeyField:
- Name - 该字段的名称,取自查询的字段。
- Sort -(可选)[asc/desc]。 数据排序方法(升序/降序)。
- Function -(可选)。 如果某特殊函数应在此字段上运行,则使用此属性,以便在使用函数时合并字段值 (:fieldname)。 例如,使用带有字段名称 Ts-Function="to_date(':ts','dd/mm/yyy')" 的 Oracle 日期函数
- ValueLeftWrapper -(可选)。 使用此属性以便在字段值前串联字符。 针对字符串字段和日期字段的默认值是撇号 (')。
- ValueRightWrapper -(可选)。 使用此属性以便在字段值后串联字符。 针对字符串字段和日期字段的默认值是撇号 (')。
- NameLeftWrapper -(可选)。 使用此属性以便在字段名称前串联字符。 默认为空字符串。
- NameRightWrapper -(可选)。 使用此属性以便在字段名称后串联字符。 默认为空字符串。
- IsPrimaryKey -(可选)[yes/no]。 如果设为“no”时,适配器在查询中的自动 where 语句中不会使用此键。
- DefaultInitialValue -(可选)。 如果 SelectInitialValues 查询不返回记录,适配器将从此处获取默认值。 如果存在一些键字段,则所有键字段必须具有此属性。
- SelectInitialValues - 向第一个 where 语句提供初始值的 select 语句(控制文件为空时)。
注意:值的顺序必须与 QueryKeyFields 的 Field 元素的顺序相同,并为每个字段返回一个结果。