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 控制台的預設值。