上一主题: 元素及属性

下一主题: 使用 CA Business Service Insight 用户界面创建适配器

从文件数据源读取记录

只要存在到数据源的 ODBC 接口,便可配置 SQL 适配器以查询文件。 为了配置适配器以读取多个文件,需要在 ConnectionString 元素中使用 Segment 元素。 有关示例,请参阅前面描述连接字符串的部分。

SQL 适配器处理文件的方式如下:

  1. 在每个查询中,适配器尝试从文件中读取内容,直到它无法检索更多记录。
  2. 然后,适配器移至下一个文件并尝试读取它。
  3. 如果没有更多文件,适配器会根据 SleepTime 属性对此查询转入休眠状态。

Schema.ini 文件

在使用文本 ODBC 驱动程序时,文本文件的格式由架构信息文件 (schema.ini) 确定。 此架构信息文件应与文本数据源放在同一目录中。

Schema.ini 文件由条目构成,每个条目描述单个文本文件的结构。 每个条目的第一行是用方括号括起的文本源文件的名称。

当适配器处理使用通配符定义的文件时,文件名会不断更改。 由于 schema.ini 文件中的名称不能包含通配符,因此适配器在连接数据库之前必须更改 schema.ini 文件。

因此,您需要在文件条目行之前添加指示器行。 此指示器行包含来自适配器配置文件的连接字符串元素的名称模式,用方括号括起。 适配器将下一行替换为用方括号括起的新文件名。

注意:schema.ini 文件可以包含若干个条目。 您负责在正确位置添加行。

Schema.ini 示例

[sqltes*.txt]
[sqltest2.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = TabDelimited
Col1=id Char Width 30
Col2=idname Char Width 30
----------------------------------------
[report_200*.txt]
[report_2003_09.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = TabDelimited
Col1=date Char Width 30
Col2=service Char Width 30
Col3=responseTime Char Width 30
----------------------------------------

DataSourceControl 文件

对于每个查询,在适配器重新启动时,数据源控制文件包含当前输入文件的文件名模式和名称,以便继续同一文件。

以下是 XML 格式的控制文件示例:

<AdapterControl Save="end" LastSaveTime="2005/03/23 09:16:15">
   <Data>
      <QueryCollection>
         <Query QueryName="TroubleTickets (on D:\Data\Incidents*.xls)">
            <KeyField Name="INC_CLOSE_DATE">
               <LastValue>05-7-3 13:06:21</LastValue>
            </KeyField>
            <LastFileName>IncidentsMarch.xls</LastFileName>
         </Query>
      </QueryCollection>
   </Data>

保留输入文件

当适配器读取当前文件完成时,它会搜索下一个文件。 下一个文件读取是满足名称模式并且名称大于上一个文件名(按字典序)的第一个文件。 即使先前的文件中添加了新记录,适配器也不会返回到这些文件。

仅当这两个属性都等于“no”并且控制文件不包含最后的文件名时,适配器才使用 InitialFileName 属性。

查询检查

仅当定义的文件存在时,适配器才检查连接字符串和查询。 如果该文件是使用通配符定义的,适配器仅针对第一个文件进行检查。

当适配器尝试从新文件读取时,会发生错误。 在这种情况下,如果关键属性等于“yes”,适配器将立即停止。 如果它等于“no”,适配器将不继续执行此查询,但继续其他查询。 或者,适配器会离开当前文件并移到下一个文件。

适配器内部变量

有两个内部变量可在配置文件中用于表示文件名的当前上下文。 它们是 :file_name 和 :file_name_no_ext,分别表示当前文件名和不带文件扩展名的当前文件名。

这些变量可用在 SelectStatement 元素、SelectInitialValues 元素和 QueryKeyField\Function 属性中。

适配器将变量替换为查询中的文件名。

例如: