Advanced Operations Guide (v11)

データ ファイルの作成と変更

このセクションでは、CLONECLROWNERCREATEDROPINDEXSETOWNER、および SINDEX といった各種 BUTIL コマンドを使用した、データ ファイルの作成と変更に関する詳細について説明します。またこのセクションでは、Btrieve データ ファイルのコンパクト化で、Btrieve データ ファイルの未使用スペース削除に関して詳細に説明します。


注意

同じディレクトリに、ファイル名が同一で拡張子のみが異なるようなファイルを置かないでください。たとえば、同じディレクトリ内のデータ ファイルの 1 つに Invoice.btr、もう 1 つに Invoice.mkd という名前を付けてはいけません。このような制限が設けられているのは、データベース エンジンがさまざまな機能でファイル名のみを使用し、ファイルの拡張子を無視するためです。ファイルの識別にはファイル名のみが使用されるため、ファイルの拡張子だけが異なるファイルは、データベース エンジンでは同一のものであると認識されます。


表 62 データ ファイルの作成と変更を行うコマンド
コマンド
説明
既存ファイルの仕様を使用して、空の新規データ ファイルを作成します。
データ ファイルのオーナー ネームをクリアします。
データ ファイルを作成します。
インデックスを削除します。
外部インデックス ファイルを作成します。
データ ファイルにオーナー ネームを割り当てます。
インデックスを作成します。

CLONE

CLONE コマンドは、既存ファイルと同じファイル仕様(オーナー ネームを含まず、補足インデックスを含む)を持つ、空の新規ファイルを作成します。新しいデータ ファイルには、既存ファイルのすべての定義済みキー属性(キー位置、キー長、重複キー値など)が含まれます。

CLONE コマンドでは、ファイル情報(システム データ参照)に影響する MicroKernel 設定オプションのすべてが無視されます(ファイル バージョンを除く)。CLONE コマンドは、[作成ファイルのバージョン]オプションで指定したデータベース エンジンのファイル バージョンを使用して新規ファイルを作成します。

形式

BUTIL -CLONE outputFile sourceFile [/O<owner | *>] [/
pagecompresson | /pagecompressoff] [/
recordcompresson | /recordcompressoff] [/UIDuname /
PWDpword [/DBdbname]] [/S]
outputFile
空の新規データ ファイルに使用するフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
sourceFile
複製する既存データ ファイルのフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
/Oowner
ソース データ ファイルにオーナー ネームが割り当てられている場合は、そのオーナー ネーム。新規データ ファイルには、オーナー ネームは含まれません。詳細については、オーナー ネームを参照してください。
/pagecompresson
outputFile のページ圧縮をオンにすると、以下の条件が設定されます。
  • Pervasive PSQL データベース エンジンのバージョンは Pervasive PSQL 9.5 以上
  • 作成ファイルのバージョン設定は 0950(9.5)以上。作成ファイルのバージョンを参照してください。
/pagecompressoff
outputFile のページ圧縮をオフにします。このパラメーターは、sourceFile にページ圧縮が指定されていない場合は無効です。
/recordcompresson
outputFile のページ圧縮をオンにします。
/recordcompressoff
outputFile のレコード圧縮をオフにします。このパラメーターは、sourceFile にレコード圧縮が指定されていない場合は無効です。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
 
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
 
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 
 

備考

Btrieve 6.0 以降では、ページ サイズが 1,024 バイトのデータ ファイルで最大 23 のキー セグメントを使用することができるため、CLONE コマンドでは、既存データ ファイルに 24 のキー セグメントが含まれ、ページ サイズが 1,024 バイトの場合、新規データ ファイルのページ サイズは 2,048 バイトに設定されます。これは、既存データ ファイルがバージョン 6.0 より前の形式で、データベース エンジン ロードの際に、作成ファイルのバージョン オプションが 5.x または 6.x に設定されていない場合に発生します。

バージョン 7.x 以前のファイルを複製する場合は、作成する新規ファイルのバージョン設定を確認してください。たとえば、6.15 ファイルを 9.5 形式で複製する場合は、[作成ファイルのバージョン]オプションを 9.5 に設定します。


メモ

ソース ファイルがシステム データを含まない 8.x 以上の形式の場合は、データベース エンジンの設定にかかわらず、出力ファイルにもシステム データは含まれません。既存ファイルへのシステム データの追加については、『Getting Started with Pervasive PSQL』を参照してください。


ステータス コード 30(指定されたファイルは MicroKernel ファイルではありません)が発生し、ソース ファイルのヘッダー ページが破損している可能性がある場合、ディスクリプション ファイルで CREATE コマンドを使用して新規の MicroKernel ファイルを作成します。

以下のコマンドは、COURSE.MKD ファイルを複製して NEWCRS.MKD ファイルを作成します。

butil -clone newcrs.mkd course.mkd 

CLROWNER

CLROWNER コマンドは、MicroKernel ファイルのオーナー ネームをクリアします。

形式

BUTIL -CLROWNER sourceFile </O<owner | *> [/UIDuname /
PWDpword [/DBdbname]]
sourceFile
データ ファイルの完全なフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
/Oowner
クリアするオーナー ネーム詳細については、オーナー ネームを参照してください。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

以下のコマンドは、TUITION.MKD のオーナー ネームをクリアします。このファイルのオーナー ネームは Sandy です。

butil -clrowner tuition.mkd /OSandy 

CREATE

CREATE コマンドは、ディスクリプション ファイルで指定されている属性を使用して、空の MicroKernel ファイルを作成します。CREATE コマンドを実行する前に、新しいキー属性を指定するディスクリプション ファイルを作成します。詳細については、ディスクリプション ファイルを参照してください。

形式

BUTIL -CREATE outputFile descriptionFile [< Y | N >] [/UIDuname 
/PWDpword [/DBdbname]]
outputFile
作成するデータベース エンジン ファイルのフル パス名。ファイル名が既存の MicroKernel ファイルと同名の場合、既存ファイルの代わりに空の新規ファイルが作成されます。既存ファイルに保存されているデータは消去され、回復することができません。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
descriptionFile
新規 MicroKernel ファイルの仕様を含むディスクリプション ファイルのフル パス名。
Y | N
既存のファイルに上書きするかどうかを指定します。このオプションに N を指定し、同名の MicroKernel ファイルが存在する場合は、エラー メッセージが表示されます。デフォルト設定は、Y です。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

以下のコマンドは、CREATE.DES ディスクリプション ファイルで定義された内容を使用し、ファイル COURSE.MKD を作成します。

butil -create course.mkd create.des 

CREATE コマンドで使用するディスクリプション ファイルの例

35 の例では、MicroKernel 形式のファイルが作成されます。ファイルのページ サイズは 512 バイト、キーは 2 つに設定されています。ファイルの各レコードの固定長部は 98 バイト に設定されています。このファイルでは、可変長レコードがブランク トランケーション、レコード圧縮、可変長部割り当てテーブル(VAT)を使用しないように指定されています。空きスペース スレッショルドは、20 パーセントに設定されています。プリアロケーションは、100 ページに設定されています。ファイル作成時に、100 ページつまり 51,200 バイトがプリアロケートされます。

図 35 CREATE コマンドで使用するディスクリプション ファイルの例

キー 0 は、重複可能で変更不可能な文字列セグメントを 2 つ含むセグメント キーで、この 2 つのセグメントには、16 進数で 20(スペース)のヌル値が指定されています。キー 0 では、コレーティング シーケンス upper.alt が使用されます。

キー 1 は、重複不可能で変更可能な数値型のセグメント化されていないキーです。これは、降順でソートされます。

DROP

DROP コマンドは、ファイルからインデックスを削除し、それ以降のキー番号から 1 を引くことによって、残りのインデックスのキー番号を調整します。キーの番号を調整しない場合は、削除に指定したキー番号に 128 を加算します。この調整は、6.0 以降のファイルでのみ使用可能です。

形式

BUTIL -DROP sourceFile < keyNumber | SYSKEY > 
[/O<owner | *>] [/UIDuname /PWDpword [/DBdbname]]
sourceFile
インデックスを削除するファイルのフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
keyNumber
削除するキー番号。元のキー番号を維持する場合は、指定したキー番号に 128 というバイアス値を足します。
SYSKEY
システム定義のログ キー(システム データ)を削除します。システム定義のログ キーを削除した場合でも、レコードから値は消去されず、新しく挿入されたレコードには、重複しないシステム定義のログ キー値が割り当てられます。
 
しかし、重複しないユーザー定義のキーが存在しない限り、システム定義のログ キーが削除されたファイルのログは実行されません。この理由から、システム定義のログ キーが破損している可能性があり、再追加する場合にのみ、このオプションを使用してください。SINDEX コマンドを使用すると、削除したシステム定義のログ キーを再利用できます。
/Oowner
ファイルのオーナー ネーム(必要な場合)。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

以下の例では、COURSE.MKD に 3 つのキーが存在します。ファイルの元のキーは、それぞれの番号が 0、1、2 となっています。

最初の例では、BUTIL -DROP コマンドで、COURSE.MKD からキー番号 1 を削除し、残りのキー番号をそれぞれ 0 と 1 に調整します。

butil -drop course.mkd 1 

以下の例では、BUTIL -DROP コマンドでキー番号 1 を削除し、キー番号の調整は行いません。キー番号は、それぞれ 0 と 2 のままになります。

butil -drop course.mkd 129  

INDEX

INDEX コマンドは、既存ファイルでキーとして指定されていないフィールドに基づき、既存 MicroKernel ファイルの外部インデックス ファイルを構築します。INDEX コマンドを実行する前に、新しいキー属性を指定するディスクリプション ファイルを作成します。ディスクリプション ファイルの詳細については、ディスクリプション ファイルを参照してください。

新規ファイルのレコードは、以下から構成されます。

形式

BUTIL -INDEX sourceFile indexFile descriptionFile [/O<owner | *>] 
[/O<owner | *>] [/UIDuname /PWDpword [/DBdbname]]
sourceFile
外部インデックスを構築する既存ファイルの完全なフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
indexFile
外部インデックスを保存するインデックス ファイルのフル パス名。
descriptionFile
新しいキー定義を含む、作成したディスクリプション ファイルのフル パス。ディスクリプション ファイルには、新しいキーの各セグメントに対する定義が含まれている必要があります。
/Oowner
データ ファイルのオーナー ネーム(必要な場合)。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

備考

INDEX コマンドは、外部インデックス ファイルを作成し、インデックスが設定されたレコードの数を表示します。外部インデックス ファイルを使用して、データ ファイルのレコードを読み込む場合は、SAVE コマンドを使用します。

INDEX コマンドで使用するディスクリプション ファイルの例

以下のディスクリプション ファイルでは、1 つのセグメントを含む新しいキーを定義します。キーは、レコードの 30 バイト目から始まり、10 バイトの長さを持ちます。また、重複と変更が可能な STRING 型で、オルタネート コレーティング シーケンスを使用しません。

図 36 INDEX コマンドで使用するディスクリプション ファイルの例

以下のコマンドは、データ ファイル COURSE.MKD を使用し、外部インデックス ファイル NEWCRS.IDX を作成します。COURSE.MKD には、オーナー ネームは必要ありません。新しいキーの定義を含むディスクリプション ファイルは、NEWCRS.DES という名前です。

butil -index course.mkd newcrs.idx newcrs.des 

SETOWNER

SETOWNER コマンドは、データ ファイルのオーナー ネームを設定します。

形式

BUTIL -SETOWNER sourceFile /O<owner | *> level [/L] [/UIDuname 
/PWDpword [/DBdbname]]
sourceFile
データ ファイルのフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
/Oowner
設定するオーナー ネーム
level
データ ファイルのアクセス制限の種類。以下は、このパラメーターの説明です。
level は /O パラメーターの直後に置く必要があります。
 
0: すべてのアクセス モードでオーナー ネームが必要(データ暗号化なし)
 
1: リード オンリー アクセスにはオーナー ネームは必要なし(データ暗号化なし)
 
2: すべてのアクセス モードでオーナー ネームが必要(データ暗号化あり)
 
3: リード オンリー アクセスにはオーナー ネームは必要なし(データ暗号化あり)
/L
長いオーナー ネームを指定します。
オーナー ネームでは大文字と小文字が区別されます。また、短いものと長いものがあります。短いオーナー ネームは半角 8 文字までの範囲で指定できます。長いオーナー ネームは半角 24 文字までの範囲で指定できます。長いオーナー ネームに関する制限事項については、『Btrieve API Guide』の 「Set Owner(29)」「手順」を参照してください。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

以下の例では、course.mkd データ ファイルの短いネームのオーナーを作成します。オーナー ネーム Sandy に制限レベル 1 を設定します。

butil -setowner course.mkd /OSandy 1  

以下の例では、billing.mkd データ ファイル用の長いオーナー ネームを作成し、そのオーナー ネームとファイルを暗号化し、すべてのアクセス モードを制限します。

butil -setowner billing.mkd /Ohr#Admin$945k7YY%svr 2 /L 

SINDEX

SINDEX コマンドは、既存 MicroKernel ファイルに追加インデックスを作成します。デフォルトでは、新規インデックスのキー番号は、データ ファイルでそれまで最大だったキー番号より 1 つ大きな番号になりますが、キー番号を指定することも可能です。例外として、DROP コマンドでインデックスを削除し、残りキー番号の調整を行わなかった場合は、未使用のキー番号が存在するため、新しいインデックスに最初の未使用番号が割り当てられます。

キー番号オプションを使用することにより、新規インデックスのキー番号を指定できます。指定するキー番号は、ファイルで使用されていない有効なキー番号でなければなりません。無効なキー番号を指定した場合は、ステータス コード 6 が返されます。

このコマンドで SYSKEY オプションを使用しない場合は、SINDEX コマンドを使用する前に、インデックスのキー仕様を定義するディスクリプション ファイルを作成する必要があります。ディスクリプション ファイルの詳細については、ディスクリプション ファイルを参照してください。

形式

BUTIL -SINDEX sourceFile <descriptionFile | SYSKEY> [keyNumber] 
[/O<owner | *>] [/O<owner | *>] [/UIDuname /PWDpword 
[/DBdbname]]
sourceFile
外部インデックスを構築する既存ファイルの完全なフル パス名。Windows プラットフォームで BUTIL を使用する際、データ ファイルが現在のディレクトリに存在する場合は、パスを指定する必要はありません。
descriptionFile
新しいキー定義を含む、作成したディスクリプション ファイルのフル パス。ディスクリプション ファイルには、新しいキーの各セグメントに対する定義が含まれている必要があります。
SYSKEY
システム キーが削除されたファイルに、システム キーを再追加します。
/Oowner
データ ファイルのオーナー ネーム(必要な場合)。
/UID<name>
/UIDuname
セキュリティが設定されているデータベースにアクセスする権限を与えられたユーザー名を指定します。
/PWD<word>
/PWDpword
uname で識別されるユーザーのパスワードを指定します。uname が指定された場合、pword は必ず指定する必要があります。
/DB<name>
/DBdbname
セキュリティが設定されたデータベース名を指定します。省略した場合はデフォルトのデータベースと解釈されます。
 

以下の例では、COURSE.MKD にインデックスを追加します。ディスクリプション ファイルの名前は、NEWIDX.DES です。

butil -sindex course.mkd newidx.des  

以下の例では、システム定義キーが削除された COURSE.MKD にシステム定義キーを追加します。

butil -sindex course.mkd syskey 

Btrieve データ ファイルのコンパクト化

BUTIL では、複数のコマンド(CLONERECOVERLOAD)を使用してデータ ファイルの未使用スペースを削除し、ファイル サイズを縮小することができます。

Btrieve データ ファイルをコンパクト化するには

  1. データ ファイルの名前を変更し、CLONE オプションを使用して元のファイルと同名の空のデータ ファイルを作成します。
  2. RECOVER を使用し、複製したファイルのデータを、シーケンシャル テキスト ファイルに保存します。
  3. LOAD を使用し、回復されたデータを複製ファイルにロードします。
    空のレコード以外のデータを含むすべてのレコードは、新しく作成したデータ ファイルにロードされます。(この処理は、対話型 Maintenance ユーティリティを使用して実行することもできます)。

データのインポートとエクスポート

データ ファイル情報の表示