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

使用 Text 驱动程序时,将使用架构信息文件来确定文本文件的格式。 架构信息文件始终命名为 Schema.ini,并且始终保留在与文本数据源相同的目录中。 架构信息文件为 IISAM 提供有关文件常规格式、列名和数据类型信息以及其他几个数据特征等信息。 访问定长数据始终需要 Schema.ini 文件。 当文本表包含 DateTime、Currency 或 Decimal 数据时,或者想要更好地控制表中数据的处理时,应使用 Schema.ini 文件。

注意

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

了解 Schema.ini 文件

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

  • 文本文件名称

  • 文件格式

  • 字段名称、宽度以及类型

  • 字符集

  • 特殊数据类型转换

以下各节将讨论这些特征。

指定文件名

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

[Sample.txt]  

指定文件格式

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

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

-或-

未指定分隔符:

Format=Delimited( )
固定长度 文件中的字段为固定长度。 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

文本

备忘录

ODBC 数据类型 Char(与 Text 相同)

Float(与 Double 相同)

Integer(与 Short 相同)

LongChar(与 Memo 相同)

Date 日期格式
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 控制面板中的默认值。