Schema.ini 文件(文本文件驱动程序)

使用文本驱动程序时,将使用架构信息文件确定文本文件的格式。 架构信息文件始终 Schema.ini 命名,并且始终与文本数据源保存在同一目录中。 架构信息文件为 IISAM 提供有关文件的一般格式、列名称和数据类型信息以及其他几个数据特征的信息。 访问固定长度的数据始终需要 Schema.ini 文件。 当文本文件包含 DateTime、Currency 或 Decimal 数据时,或者您希望对表中数据的处理进行更多控制时,应使用 Schema.ini 文件。

注意

文本 ISAM 将从注册表获取初始值,而不是从 Schema.ini 获取。 相同的默认文件格式适用于所有新的文本数据表。 CREATE TABLE 语句创建的所有文件都继承这些相同的默认格式值,这些默认格式值通过在“定义文本格式”对话框中选择“文件格式”值<进行设置,并在“”列表中选择了默认值>。 如果注册表中的值与 Schema.ini 中的值不同,注册表中的值将被 Schema.ini 中的值覆盖。

了解 Schema.ini 文件

Schema.ini 文件提供有关文本文件中记录的架构信息。 每个 Schema.ini 项指定表的五个特征之一:

  • 文本文件名称

  • 文件格式

  • 字段名称、宽度和类型

  • 字符集

  • 特殊数据类型转换

以下部分讨论这些特征。

指定文件名

Schema.ini 中的第一个条目始终是用方括号括起来的文本源文件的名称。 以下示例演示了文件 Sample.txt 的条目:

[Sample.txt]  

指定文件格式

Schema.ini 中的 “格式” 选项指定文本文件的格式。 文本 IISAM 可以从大多数字符分隔的文件自动读取格式。 可以使用文件中除双引号 (“) 之外的任何单字符作为分隔符。 Schema.ini 中的 “格式” 设置将逐个替代 Windows 注册表中的设置。 下表列出了 “格式” 选项的有效值。

格式说明符 表格式 Schema.ini Format 语句
制表符分隔 文件中的字段由制表符分隔。 Format=TabDelimited
CSV 分隔 文件中的字段由逗号分隔 (逗号分隔值) 。 Format=CSVDelimited
自定义分隔符 文件中的字段由你选择输入到对话框中的任何字符分隔。 允许除双引号 (“) 以外的所有项,包括空白。 Format=带分隔符 (自定义字符)

-或-

未指定分隔符:

Format=带分隔符 ( )
固定长度 文件中的字段长度固定。 Format=FixedLength

指定字段

可以通过两种方式在字符分隔的文本文件中指定字段名称:

  • 在表的第一行中包含字段名称,并将 ColNameHeader 设置为 True。

  • 按数字指定每列,并指定列名和数据类型。

必须按编号指定每列,并指定固定长度文件的列名、数据类型和宽度。

注意

Schema.ini 中的 ColNameHeader 设置将逐个文件替代 Windows 注册表中的 FirstRowHasNames 设置。

还可以确定字段的数据类型。 使用 MaxScanRows 选项指示在确定列类型时应扫描的行数。 如果将 MaxScanRows 设置为 0,则会扫描整个文件。 Schema.ini 中的 MaxScanRows 设置会逐个替代 Windows 注册表中的设置。

以下条目指示 Microsoft Jet 应使用表第一行中的数据来确定字段名称,并应检查整个文件以确定使用的数据类型:

ColNameHeader=True  
MaxScanRows=0  

下一个条目使用列号 (Coln) 选项指定表中的字段,该选项对于字符分隔文件是可选的,对于固定长度的文件是必需的。 该示例显示了两个字段的 Schema.ini 条目:一个 10 个字符的 CustomerNumber 文本字段和一个 30 个字符的 CustomerName 文本字段:

Col1=CustomerNumber Text Width 10  
Col2=CustomerName Text Width 30  

Coln 的语法为:

  
n=ColumnName type [Width] [#]  

注解

下表描述了 Coln 条目的每个部分。

参数 描述
ColumnName 列的文本名称。 如果列名包含嵌入空格,则必须将其括在双引号中。
type 数据类型如下所示:

Microsoft Jet 数据类型

bit

Byte

Short

Long

货币

Single

Double

DateTime

Text

备忘录

ODBC 数据类型 字符 (与文本) 相同

Float (与 Double) 相同

整数 (与 Short) 相同

LongChar (与备注) 相同

日期 日期格式
Width 文本字符串值 Width。 指示以下数字指定列的宽度, (字符分隔文件的可选;对于固定长度的文件) 是必需的。
# 指定列宽度的整数值 (指定) 所需的 宽度

选择字符集

可以从两个字符集中进行选择:ANSI 和 OEM。 Schema.ini 中的 CharacterSet 设置将逐个替代 Windows 注册表中的设置。 以下示例演示将字符集设置为 ANSI 的 Schema.ini 项:

CharacterSet=ANSI  

指定数据类型格式和转换

Schema.ini 文件包含多个选项,可用于指定数据的转换或显示方式。 下表列出了其中每个选项。

选项 说明
DateTimeFormat 可以设置为指示日期和时间的格式字符串。 如果导入/导出中的所有日期/时间字段都使用相同的格式处理,则应指定此项。 支持除 A.M. 和 P.M. 以外的所有 Microsoft Jet 格式。 如果没有格式字符串,则使用 Windows 控制面板短日期图片和时间选项。
DecimalSymbol 可以设置为用于将整数与数字的小数部分分开的任何单字符。
NumberDigits 指示数字的小数部分的小数位数。
NumberLeadingZeros 指定小于 1 且大于 -1 的十进制值是否应包含前导零;此值可以是 False (无前导零) 或 True。
CurrencySymbol 指示可用于文本文件中货币值的货币符号。 示例包括美元符号 ($) 和 Dm。
CurrencyPosFormat 可以设置为以下任何值:

- 不分隔的货币符号前缀 ($1)
- 不分隔的货币符号后缀 (1$)
- 带一个字符分隔的货币符号前缀 ($ 1)
- 一个字符分隔的货币符号后缀 (1 $)
CurrencyDigits 指定用于货币金额的小数部分的位数。
CurrencyNegFormat 可以是以下其中一个值:

- ($1)
- -$1
- $-1
- $1-
- (1$)
- -1$
- 1-$
- 1$-
- -1 $
- -$ 1
- 1 $-
- $ 1-
- $ -1
- 1- $
- ($ 1)
- (1 $)

此示例显示了美元符号,但应将其替换为实际程序中相应的 CurrencySymbol 值。
CurrencyThousandSymbol 指示可用于将文本文件中的货币值分隔千元的单字符符号。
CurrencyDecimalSymbol 可以设置为任何单字符,用于将整体与货币金额的小数部分分开。

注意

如果省略某个条目,则使用 Windows 控制面板中的默认值。