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を持つ分析ストレージスキーマdwhにtable1というテーブルを作成します。
このコマンドを正しく実行するには、スキーマ名(指定された場合)が分析ストレージ スキーマ名と一致し、作成されるテーブルが指定されたスキーマにすでに存在していない必要があります。
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と同じ列定義で、分析ストレージdwhにtable1という新しいテーブルを作成します(アスタリスクは投影リストで使用されます)。
例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つの列aとbを持つtable1という新しいテーブルをソース・テーブルと同じ型で作成します。
このコマンドを正しく実行するには、以下の Criteria を満たす必要があります:
- スキーマ名は、分析ストレージ・スキーマの名前、または
importer.defaultSchemaプロパティが適切に設定されたスキーマと一致する必要があります; INTO句で指定されたテーブルは、指定された Schema にすでに存在してはなりません;- ソース・テーブルがソース・スキーマに存在する必要があります。
importer.useFullSchemaName Model Property
CREATE TABLEとSELECT INTOの両コマンドは、データソースのimporter.useFullSchemaNameモデルプロパティによって動作が異なります。その値はTRUEまたはFALSEのいずれかであり、どちらの場合も動作は以下のとおり:
importer.useFullSchemaName=TRUE
Query | Schema in DB | Table name in DB | Table name in DV |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
| Query fails because the schema | ||
importer.useFullSchemaName=FALSE
Query | Schema in DB | Table name in DB | Table name in DV |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
た と えば、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となります。