只要存在到数据源的 ODBC 接口,便可配置 SQL 适配器以查询文件。 为了配置适配器以读取多个文件,需要在 ConnectionString 元素中使用 Segment 元素。 有关示例,请参阅前面描述连接字符串的部分。
SQL 适配器处理文件的方式如下:
在使用文本 ODBC 驱动程序时,文本文件的格式由架构信息文件 (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 ----------------------------------------
对于每个查询,在适配器重新启动时,数据源控制文件包含当前输入文件的文件名模式和名称,以便继续同一文件。
以下是 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 属性中。
适配器将变量替换为查询中的文件名。
例如:
| 版权所有 © 2012 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |