Access匯入文字檔案的Schema.ini檔案格式
Schema.ini格式如下(參考:MSDN主題 Schema.ini File):
Schema.ini用於提供文字資料中的記錄規格資訊。每個Schema.ini的條目用於指明表的5個特徵之一:
文字檔名
檔名有方括號括起來,例如如果要對Sample.txt使用Schema,那麼它的對應的Schema條目應該是
[Sample.txt]
檔案格式
指令如下:
Format=Value
Value可以取下面的值之一:
TabDelimited 用Tab分隔
CSVDelimited 用逗號分隔
FixedLength 固定長度
Delimited(C) 指定字元,其中C可以為除了雙引號(")外的任何字元,也可以為空
欄位名、欄位寬度和型別
格式為:Coln=欄位名 資料型別 [width 寬度]
欄位名可以是任意字元,如果欄位名包含空格,請使用雙引號括起來。
資料型別可以為:
Bit
Byte
Short(Integer)
Long
Currency
Single
Double(Float)
DateTime(Date DateFormat)
Text(Char)
Memo(LongChar)
其中DateFormat是日期的格式字串例如:Date YYYY-MM-DD
字符集
格式:CharacterSet=ANSI | OEM
格式只有兩種:ANSI和OEM
特殊資料型別轉換
特殊資料型別轉換一般使用的比較少,主要是自定義日期、貨幣等等的資料格式,一般不用理會。在此也不作詳細敘述。請自己檢視MSDN幫助:Schema.ini File
下面給出一個簡單的例子,假設有一個表Contacts.txt類似下面:
First NameLast NameHireDate
Nancy Davolio 10-22-91
Robert King 10-23-91
那麼Schema.ini個是類似下面的INI檔案(我加了註釋):
[Contacts.txt] ///需要匯入的文字檔名
ColNameHeader=True ///是否有資料頭
Format=FixedLength ///欄位固定長度
MaxScanRows=0 ///最多匯入行
CharacterSet=OEM ///字符集
Col1="First Name" Char Width 10 ///第一列格式
Col2="Last Name" Char Width 9 ///第二列格式
Col3="HireDate" Date Width 8 ///第三列格式
////依此類推
我們可以根據資料自動建立這個Schema.ini檔案!
注意,Schema.ini必須和需要匯入的文字檔案在同一目錄!!!如果不在同一個目錄,必須指定Schema.ini的全路徑!
此後,我們就可以利用下面的語句來匯入資料了:
DoCmd.TransferText acImportFixed, , "Contacts", "C:Documents.txt"
或者
DoCmd.TransferText acImportFixed, "C:Documents.ini", "Contacts", "C:Documents.txt"
下面給出TransferText的語法(摘自Access幫助):
DoCmd.TransferText [TransferType][, SpecificationName], TableName, FileName[, HasFieldNames][, HtmlTableName][, CodePage]
TransferType 可選 AcTextTransferType。
AcTextTransferType 可以是下列 AcTextTransferType 常量之一:
acExportDelim
acExportFixed
acExportHTML
acExportMerge
acImportDelim 預設
acImportFixed
acImportHTML
acLinkDelim
acLinkFixed
acLinkHTML
如果將該引數留空,則採用預設常量 (acImportDelim)。
SpecificationName 可選 Variant 型。字串表示式,表示在當前資料庫中建立並儲存的匯入或匯出規格的名稱。對於固定長度的文字檔案, 必須指定引數或使用 schema.ini 檔案,該檔案還必須儲存在匯入、連結或匯出的文字檔案的同一個資料夾中。若要建立一個方案檔案, 可使用文字匯入/匯出嚮導建立此檔案。對於分隔的文字檔案和 Microsoft Word 郵件合併資料檔案,可以將該引數留空,以便選擇預設的匯入/匯出規格。
TableName 可選 Variant 型。字串表示式,表示要向其匯入文字資料、從中匯出文字資料或連結文字資料的 Microsoft Access 表的名稱,或者要將其結果匯出到文字檔案的 Microsoft Access 查詢的名稱。
FileName 可選 Variant 型。字串表示式,表示要從中匯入、匯出到或連結到的文字檔案的完整名稱(包括路徑)。
HasFieldNames 可選 Variant 型。使用 True (-1) 可以在匯入、匯出或連結時,使用文字檔案中的第一行作為欄位名。使用 False (0) 可以將文字檔案中的第一行看成普通資料。如果將該引數留空,則採用預設值 (False)。該引數將被 Microsoft Word 郵件合併資料檔案忽略,這些檔案的第一行中必須包含欄位名。
HTMLTableNam 可選 Variant 型。字串表示式,表示要匯入或連結的 HTML 檔案中的表或列表的名稱。除非 transfertype 引數設為 acImportHTML 或 acLinkHTML,否則該引數將被忽略。如果將該引數留空