CREATE TABLE

CREATE TABLEコマンドは、指定されたSchema(指定された場合)に新しいTableを作成します。スキーマ名がコマンドに含まれていない場合、一時テーブルが作成されます。

Syntax

CREATE TABLE [<dwh_schema_name>.]<table_name> <table_definition>

必要であれば、 PRIMARY KEY句を使用して主キーを指定することもできます:

CREATE TABLE dwh.table1 (col1 integer, col2 string, PRIMARY KEY (col1)) ;;

Example:

CREATE TABLE dwh.table1 (col1 integer);

このコマンドは、integer型のカラムcol1を持つ分析ストレージスキーマdwhtable1というテーブルを作成します。

このコマンドを正しく実行するには、スキーマ名(指定された場合)が分析ストレージ スキーマ名と一致し、作成されるテーブルが指定されたスキーマにすでに存在していない必要があります。

SELECT INTO

SELECT INTO コマンドは、ソース テーブルまたはソース テーブルの結合を取り、指定された Schema で新しいテーブルを作成し、ソース テーブルからデータをコピーします。

Syntax

SELECT <projection_symbols> INTO <dwh_schema_name>.<table_name> FROM <from_clause>

例1:

SELECT * INTO dwh.table1 FROM source.table2;

このコマンドは、source.table2と同じ列定義で、分析ストレージdwhtable1という新しいテーブルを作成します(アスタリスクは投影リストで使用されます)。

例2:

SELECT t1.a, t2.b INTO dwh.table1 FROM source.table2 t1 JOIN source.table2 t2 ON t1.c = t2.c;

このコマンドは、Analytical Storage dwhに、 2つの列abを持つtable1という新しいテーブルをソース・テーブルと同じ型で作成します。

このコマンドを正しく実行するには、以下の Criteria を満たす必要があります:

  • スキーマ名は、分析ストレージ・スキーマの名前、またはimporter.defaultSchemaプロパティが適切に設定されたスキーマと一致する必要があります;
  • INTO句で指定されたテーブルは、指定された Schema にすでに存在してはなりません;
  • ソース・テーブルがソース・スキーマに存在する必要があります。

importer.useFullSchemaName Model Property

CREATE TABLESELECT INTOの両コマンドは、データソースのimporter.useFullSchemaNameモデルプロパティによって動作が異なります。その値はTRUEまたはFALSEのいずれかであり、どちらの場合も動作は以下のとおり:

importer.useFullSchemaName=TRUE

Query

Schema in DB

Table name in DB

Table name in DV

CREATE table test_dwh.public.p1 (...);;

public

p1

public.p1

CREATE table test_dwh.p2 (...) ;;

public

p2

public.p2

CREATE table test_dwh.dwh.d1 (...) ;;

dwh

d1

dwh.d1

CREATE table test_dwh.dwh2.d2 (...) ;;

Query fails because the schema dwh2 does not exist

importer.useFullSchemaName=FALSE

Query

Schema in DB

Table name in DB

Table name in DV

CREATE table test_dwh.public.p1 (...);;

public

public.p1

public.p1

CREATE table test_dwh.p2 (...) ;;

public

p2

p2

CREATE table test_dwh.dwh.d1 (...) ;;

public

dwh.d1

dwh.d1

CREATE table test_dwh.dwh2.d2 (...) ;;

public

dwh2.d2

dwh2.d2

た と えば、test_dwh.public.p1というテーブルを作成し、 プロパテ ィ をTRUEに設定す る と 、 タ ーゲ ッ ト デー タ ベース のテーブル名は p1にな り 、 その完全修飾名は some_DB.public.p1にな り ます。

プロパティをFALSEに設定すると、テーブル名は public.p1となり、その完全修飾名は some_DB.public.public.p1となります。最初の "public" はデータベース内のSchema名で、2番目はテーブル名の一部です。どちらの場合もCData Virtuality Server では test_dwh.public.p1となります。