テキストドライバーを使用する場合、テキストファイルのフォーマットはスキーマ情報ファイルを使って決定されます。 スキーマ情報ファイルは常に Schema.ini と名付けられ、テキストデータソースと同じディレクトリに保持されます。 スキーマ情報ファイルは、ファイルの一般的なフォーマット、列名やデータ型情報、その他いくつかのデータ特性に関する情報をIISAMに提供します。 固定長データにアクセスするには必ず Schema.ini ファイルが必要です。 テキストテーブルにDateTime、Currency、または10進データが含まれている場合や、テーブル内のデータの処理をより細かくコントロールしたい時は、Schema.ini ファイルを使うべきです。
Note
テキストISAMは Schema.iniではなくレジストリから初期値を取得します。 すべての新しいテキストデータテーブルには同じデフォルトのファイル形式が適用されます。 CREATE TABLE文で作成されたすべてのファイルは、同じデフォルトのフォーマット値を継承します。これは、テーブルリストで選択した「デフォルト<>のテキストフォーマット定義ダイアログボックスでファイルフォーマットの値を選択することで設定されます。 レジストリの値が Schema.iniの値と異なる場合、レジストリの値は Schema.iniの値によって上書きされます。
Schema.ini ファイルの理解
Schema.ini ファイルはテキストファイル内のレコードに関するスキーマ情報を提供します。 各 Schema.ini 項目は表の5つの特徴のいずれかを指定します。
テキストファイル名
ファイル形式
フィールド名、幅、種類
文字集合
特殊なデータ型変換
以下のセクションではこれらの特徴について説明します。
ファイル名の指定
Schema.ini の最初のエントリは常にテキストソースファイルの名前で、角括弧で囲まれています。 以下の例はファイル Sample.txtのエントリを示しています:
[Sample.txt]
ファイル形式の指定
Schema.ini の フォーマット オプションはテキストファイルのフォーマットを指定します。 Text IISAMはほとんどの文字区切ファイルから自動的にフォーマットを読み取ることができます。 ファイル内で任意の単一文字を区切り符として使用できますが、二重引用符(" )を除く Schema.ini のフォーマット設定は、ファイルごとにWindowsレジストリの設定を上書きします。 以下の表は フォーマット オプションの有効な値を示しています。
| 書式指定子 | テーブルの形式 | Schema.ini フォーマットステートメント |
|---|---|---|
| タブ区切 | ファイル内のフィールドはタブで区切られています。 | Format=TabDelimited |
| CSV区切 | ファイル内のフィールドはコンマ(コンマ区切られた値)で区切られています。 | Format=CSVDelimited |
| カスタム区切られた | ファイル内のフィールドは、ダイアログボックスに入力する任意の文字で区切られます。 二重引用符(")を除くすべてが許可されており、空欄も含まれます。 | Format=Delimited(カスタム文字) -又は- 区切り符を指定しない場合: Format=Delimited( ) |
| 固定長 | ファイル内のフィールドは一定の長さです。 | Format=FixedLength |
場の指定
文字区切られたテキストファイルでは、フィールド名を指定する方法は2通りです。
テーブルの最初の行にフィールド名を含め、 ColNameHeader をTrueに設定 します。
各列を番号で指定し、列名とデータ型を指定します。
各列を番号で指定し、固定長ファイルの場合は列名、データ型、幅を指定します。
Note
Schema.ini のColNameHeader設定は、Windowsレジストリ内のFirstRowHasNames設定をファイルごとに上書きします。
フィールドのデータ型も決定可能です。 MaxScanRowsオプションを使って、カラムタイプを決定する際にスキャンすべき行数を指定します。 MaxScanRowsを0に設定すると、ファイル全体がスキャンされます。 Schema.ini のMaxScanRows設定は、Windowsレジストリの設定をファイルごとに上書きします。
以下の項目は、Microsoft Jetがテーブルの1行目のデータを用いてフィールド名を決定し、使用されるデータ型を特定するためにファイル全体を調査すべきであることを示しています。
ColNameHeader=True
MaxScanRows=0
次の項目では、文字区切ファイルでは任意で、固定長ファイルでは必須の列番号(Coln)オプションでテーブル内のフィールドを指定します。 例は、10文字のCustomerNumberテキストフィールドと30文字のCustomerNameテキストフィールドの2つのフィールドの Schema.ini エントリを示しています。
Col1=CustomerNumber Text Width 10
Col2=CustomerName Text Width 30
大文字nの構文は次の通りです:
n=ColumnName type [Width] [#]
Remarks
以下の表は 、Coln の各部分を説明します。
| パラメーター | Description |
|---|---|
| ColumnName | コラムのテキスト名。 列名に埋め込みスペースがある場合は、二重引用符で囲む必要があります。 |
| type | データ型は以下の通りです: Microsoft Jet データ型 ビット Byte 短い Long 通貨 Single Double DateTime テキスト メモ ODBCデータ型 チャー(テキストと同じ) フロート(ダブルと同じ) 整数(ショートと同じ) ロングチャー(メモと同じ) 日付 形式 |
| 太さ | 文字通りの文字列値は Width。 以下の数字が列の幅を示すことを示します(文字区切りファイルでは任意、固定長ファイルでは必須)。 |
| # | 列の幅を示す整数値( 幅 を指定する場合は必須)。 |
文字セットの選択
2つの文字セットから選択できます:ANSIとOEMです。 Schema.ini のCharacterSet設定は、Windowsレジストリの設定をファイルごとに上書きします。 以下の例は、文字セットをANSIに設定する Schema.ini エントリを示しています。
CharacterSet=ANSI
データ型フォーマットと変換の指定
Schema.ini ファイルには、データの変換方法や表示方法を指定するための複数のオプションが含まれています。 以下の表はこれらの選択肢を一覧にしています。
| オプション | Description |
|---|---|
| DateTimeFormat | 日付と時間を示すフォーマット文字列に設定できます。 インポート/エクスポートのすべての日付/時刻フィールドが同じフォーマットで扱われている場合は、このエントリを指定するべきです。 A.M.とP.M.を除くすべてのMicrosoft Jetフォーマットがサポートされています。 フォーマット文字列がない場合は、Windows コントロール パネルの短い日付写真と時間オプションが使われます。 |
| DecimalSymbol | 整数と分数部分を区切るために使われる任意の単一文字に設定できます。 |
| ナンバーデジット | 数の小数部分における小数点の数を示します。 |
| ナンバーリーディングゼロ | 1未満かつ -1 より大きい小数点の値に先頭のゼロを含めるべきかどうかを指定します。この値はFalse(先頭のゼロなし)またはTrueのいずれかである。 |
| CurrencySymbol | テキストファイル内の通貨値に使用できる通貨記号を示します。 例としては、ドル記号($)やDm.があります。 |
| CurrencyPosFormat | 次のいずれかの値に設定できます。 - 通貨記号の接頭辞で区切りのないもの($1) - 通貨記号の接尾辞で区切りのないもの(1ドル) - 1文字間隔の通貨記号プレフィックス($1) - 1文字間隔(1 $)の通貨記号サフィックス |
| CurrencyDigits | 通貨の小数部分に使われる数字の数を指定します。 |
| CurrencyNegFormat | 値は、次のいずれかです。 - (1ドル) - -1ドル - $-1 - 1ドル- - (1ドル) - -1ドル - 1ドル - 1ドル- - -1 $ - -1ドル - 1ドル- - 1ドル- - -1 ドル - 1- $ - ($1) - (1ドル) この例はドル記号を示していますが、実際のプログラム内で適切な CurrencySymbol 値に置き換えるべきです。 |
| 通貨千記号 | テキストファイル内の通貨値を千単位で区切るために使える1文字記号を示します。 |
| 通貨DecimalSymbol | 通貨の全部分と分数部分を区別するために使われる任意の単一文字に設定できます。 |
Note
項目を省略した場合、Windows コントロール パネルのデフォルト値が使われます。