|
メタデータは、データに関するデータです。Pervasive PSQL データベースのメタデータは、スキーマと呼びます。リレーショナル データベースでは、スキーマはテーブル、各テーブルのフィールド、およびフィールドとテーブルの関係を定義します。スキーマは Pervasive PSQL によってデータ辞書ファイル(DDF)に格納されます。
1 つまたは複数のテーブルのスキーマをテキスト ファイルにエクスポートすることができます。エクスポートされたスキーマには CREATE TABLE SQL ステートメント(および、適用可能な場合は CREATE INDEX ステートメント)が含まれ、テーブルとそのインデックスを作成します。エクスポートされたファイルにはデフォルトで拡張子 "sql" が付き、SQL スクリプトと呼びます。
SQL スクリプト ファイルは SQL Editor で実行できます。「SQL スクリプトを開くには」を参照してください。
テーブルが開けない場合、SQL スクリプトには "テーブルを開けません" というテキストが含まれます。たとえば、テーブルにオーナー ネームが設定されている場合や、PCC の実行中にテーブルが PCC の外部で削除された場合にエラーが発生します。
テーブル スキーマのエクスポート時には、以下の 3 つのオプションがあります。
IN DICTIONARY 句はデータベース エンジンに DDF のみを変更するよう指示し、基になる物理データは変更しません。通常、Pervasive PSQL は DDF とデータ ファイルを同期させますが、この句を使用するとテーブル辞書定義を既存のデータ ファイルと一致させることができます。
この句は、既存のデータ ファイルと合致する定義を辞書内に作成したい場合に役立ちます。その他の一般的な使用法は、既存のデータベースの複製を作成したい場合です。1 つのデータベースからすべてのステートメントをエクスポートし、新規データベースを作成して、エクスポートしたスクリプトを新しいデータベースに実行します。
SQL スクリプトに IN DICTIONARY 句が含まれている場合は、SQL スクリプトを SQL Editor で実行する際にデータ ファイルが既に存在している必要があります。
IN DICTIONARY 句は、常に USING 句と対になっています。
エクスポートされたステートメントは、以下のようになります。
CREATE TABLE "Course" IN DICTIONARY USING 'Course.mkd' (
"Name" CHAR(7) NOT NULL CASE ,
"Description" CHAR(50) CASE ,
"Credit_Hours" USMALLINT,
"Dept_Name" CHAR(20) NOT NULL CASE
);
CREATE UNIQUE INDEX "Course_Name" IN DICTIONARY ON "Course"("Name");
CREATE INDEX "DeptName" IN DICTIONARY ON "Course"("Dept_Name");
『SQL Engine Reference』の 「IN DICTIONARY」 も参照してください。
USING キーワードを使用すると、テーブルを特定のデータ ファイルに関連付けることができます。
エクスポートされたステートメントは、以下のようになります。
CREATE TABLE "Course" USING 'Course.mkd' (
"Name" CHAR(7) NOT NULL CASE ,
"Description" CHAR(50) CASE ,
"Credit_Hours" USMALLINT,
"Dept_Name" CHAR(20) NOT NULL CASE
);
CREATE UNIQUE INDEX "Course_Name" IN DICTIONARY ON "Course"("Name");
CREATE INDEX "DeptName" IN DICTIONARY ON "Course"("Dept_Name");
『SQL Engine Reference』の 「USING」 を参照してください。
「プレーン」ステートメントは、IN DICTIONARY 句と USING 句を除外します。プレーンな CREATE TABLE 構文は、単にテーブル名を変更するか同じテーブルを別のデータベースに作成することによって複製を作成するのに便利です。
エクスポートされたステートメントは、以下のようになります。
CREATE TABLE "Course"(
"Name" CHAR(7) NOT NULL CASE ,
"Description" CHAR(50) CASE ,
"Credit_Hours" USMALLINT,
"Dept_Name" CHAR(20) NOT NULL CASE
);
CREATE UNIQUE INDEX "Course_Name" ON "Course"("Name");
CREATE INDEX "DeptName" ON "Course"("Dept_Name");
『SQL Engine Reference』の 「CREATE TABLE」 を参照してください。
特定のテーブルまたは複数のテーブルのスキーマをエクスポートするか、データベース レベルですべてのテーブルのスキーマを一度にエクスポートすることができます。
テーブル スキーマを特定のテーブルにエクスポートするには
すべてのテーブル スキーマを一度にエクスポートするには
|