Schema.ini 檔案 (文字檔驅動程式)

使用 Text 驅動程式時,文字檔的格式會使用結構描述資訊檔決定。 結構描述資訊檔的名稱一律為 Schema.ini,且一律保存在與文字資料來源相同的目錄。 結構描述資訊檔會提供包含一般檔案格式的 IISAM、資料行名稱和資料類型資訊,及數個其他資料的特性。 存取固定長度的資料時,一律需要 Schema.ini 檔案。 如果文字資料表包含日期時間、貨幣或十進位資料,或您希望提升資料表中資料的處理控制,請使用 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 中的 [格式] 選項會指定文字檔的格式。 Text IISAM 可以從大部分的字元分隔檔案自動讀取格式。 您可以在檔案中使用任何單一字元作為分隔符號,但雙引號 (“) 除外。 Schema.ini中的 [格式] 設定會覆寫 Windows 登錄中的設定 (逐一覆寫檔案)。 下表列出 [格式] 選項的有效值。

格式規範 資料表格式 Schema.ini Format 陳述式
Tab 分隔 以 Tab 分隔檔案中的欄位。 Format=TabDelimited
CSV 分隔 以逗號分隔檔案中的欄位 (逗號分隔值)。 Format=CSVDelimited
自訂分隔 以您選擇輸入對話方塊的任何字元分隔檔案中的欄位。 您可以使用所有字元 (包括空白),但雙引號 (“) 除外。 Format=Delimited(custom character)

-或-

未指定分隔符號:

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)] 選項,即字元分隔檔案的選用選項及固定長度檔案的必要選項,指定資料表中的欄位。 此範例顯示兩個欄位:10 個字元 CustomerNumber 文字欄位與 30 個字元 CustomerName 文字欄位的 Schema.ini 項目:

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

Coln 的語法:

  
n=ColumnName type [Width] [#]  

備註

下表描述 Coln 項目的每個部分。

參數 Description
ColumnName 資料行的文字名稱。 如果資料行名稱包含內嵌空格,您必須以雙引號括住該名稱。
type 資料類型如下所示:

Microsoft Jet 資料類型

bit

Byte

Short

long

貨幣

Single

Double

Datetime

Text

Memo

ODBC 資料類型 Char (與文字相同)

浮點數 (與 Double 相同)

整數 (與 Short 相同)

LongChar (與 Memo 相同)

日期日期格式
寬度 常值字串值 Width。 指出下列數字指定資料行的寬度 (字元分隔檔案為選用、固定長度檔案為必要)。
# 指定資料行寬度的整數 (如果必須指定寬度)。

選取字元集

您可以從兩個字元集選取:ANSI 與 OEM。 Schema.ini 中的 [CharacterSet] 設定會覆寫 Windows 登錄中的設定 (逐一覆寫檔案)。 下列範例顯示設定字元集為 ANSI 的 Schema.ini 項目:

CharacterSet=ANSI  

指定資料類型格式與轉換

Schema.ini 檔案包含數個選項,您可用來指定資料轉換或顯示的方式。 下表列出每個選項。

選項 Description
DateTimeFormat 可以設定指出日期和時間的格式字串。 如果匯入/匯出中所有的日期/時間欄位都以相同的格式處理,即建議您指定此項目。 支援所有 Microsoft Jet 格式,但 A.M. 和 P.M. 除外。 如果沒有格式字串,即使用 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 控制台的預設值。