データ領域が限られているテーブルに少量のデータを挿入する場合は、insert… VALUES
またはVALUES table
を使用してこの操作を実行します。
INSERT INTO
操作を実行する前に、ターゲットテーブルに対するALTER権限と、ソーステーブルのメタデータに対するDESCRIBE権限があることを確認してください。 詳細は、「MaxCompute権限」をご参照ください。
次のプラットフォームでステートメントを実行できます。
操作
MaxComputeでは、INSERT … VALUES
またはVALUES TABLE
操作を使用して、少量のデータをテーブルに挿入できます。
API 操作 | 説明 |
| ビジネステストフェーズでは、
|
| 挿入されたデータに対して簡単なコンピューティング操作を実行するには、MaxComputeの
|
制限事項
INSERTを使用する
またはVALUES TABLE
操作でデータをテーブルに挿入する場合、insert OVERWRITE
を使用してデータを挿入する列を指定することはできません。 代わりに、INSERT INTO
のみを使用できます。
構文
--INSERT ... VALUES
insert into table <table_name>
[partition (<pt_spec>)][(<col1_name> ,<col2_name>,...)]
values (<col1_value>,<col2_value>,...),(<col1_value>,<col2_value>,...),...
--values table
values (<col1_value>,<col2_value>,...),(<col1_value>,<col2_value>,...),<table_name> (<col1_name> ,<col2_name>,...)...
table_name: 必須です。 データを挿入するテーブルの名前。 テーブルは既存のテーブルである必要があります。
pt_spec: オプション。 データを挿入する宛先パーティション。 値の形式は
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
です。 データをパーティションテーブルに更新する場合は、このパラメーターを指定する必要があります。col_name: オプション。 データを挿入する宛先列の名前。
col_name: オプション。 ターゲットテーブルの列の値。 複数の列値を指定する場合は、コンマ (,) で区切ります。 列の値は、カスタム関数式や組み込み関数式など、定数式と非定数式にすることができます。 列値が指定されていない場合、デフォルト値はNULLです。
例
例1:
INSERT... VALUES
は、指定したパーティションにデータを挿入するためにします。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string,value bigint) partitioned by (p string); -- Add the abc partition to the srcp table. alter table srcp add if not exists partition (p='abc'); -- Insert data into the abc partition in the srcp table. insert into table srcp partition (p='abc') values ('a',1),('b',2),('c',3); -- Query data from the srcp table. select * from srcp where p='abc'; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | a | 1 | abc | | b | 2 | abc | | c | 3 | abc | +------------+------------+------------+
例2:
INSERT... VALUES
は、ランダムパーティションにデータを挿入するためにします。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string,value bigint) partitioned by (p string); -- Insert data into the srcp table without specifying a partition. insert into table srcp partition (p)(key,p) values ('d','20170101'),('e','20170101'),('f','20170101'); -- Query data from the srcp table. select * from srcp where p='20170101'; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | d | NULL | 20170101 | | e | NULL | 20170101 | | f | NULL | 20170101 | +------------+------------+------------+
例3: 複雑なデータ型を使用して定数を構築し、
INSERT
操作を使用してデータをインポートします。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string,value array<int>) partitioned by (p string); -- Add a partition to the srcp table. alter table srcp add if not exists partition (p='abc'); -- Insert data into the abc partition of the srcp table. insert into table srcp partition (p='abc') select 'a', array(1, 2, 3); -- Query data from the srcp table. select * from srcp where p='abc'; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | a | [1,2,3] | abc | +------------+------------+------------+
例4:
INSERT … VALUES
操作を実行して、DATETIME型またはTIMESTAMP型のデータをテーブルに挿入し、values
でデータ型を指定します。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string, value timestamp) partitioned by (p string); -- Add a partition to the srcp table. alter table srcp add if not exists partition (p='abc'); -- Insert data into the abc partition in the srcp table. insert into table srcp partition (p='abc') values (datetime'2017-11-11 00:00:00',timestamp'2017-11-11 00:00:00.123456789'); -- Query data from the srcp table. select * from srcp where p='abc'; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | 2017-11-11 00:00:00 | 2017-11-11 00:00:00.123 | abc | +------------+------------+------------+
例5:
VALUES TABLE
を使用して、パーティションテーブルにデータを挿入します。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string,value bigint) partitioned by (p string); -- Insert data into the srcp table. insert into table srcp partition (p) select concat(a,b), length(a)+length(b),'20170102' from values ('d',4),('e',5),('f',6) t(a,b); -- Query data from the srcp table. select * from srcp where p='20170102'; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | d4 | 2 | 20170102 | | e5 | 2 | 20170102 | | f6 | 2 | 20170102 | +------------+------------+------------+
VALUES (…), (…) t(a, b)
は、t
という名前のテーブルにa
列とb
列が含まれることを定義します。 a列のデータ型はSTRING、b列のデータ型はBIGINTです。 列のデータ型は、VALUES
リストから派生する必要があります。例6:
SELECT * FROM
とUNION ALL
の組み合わせではなく、VALUES tableを使用して定数テーブルを作成します。 サンプル文:select 1 c union all select 2 c; -- The preceding statement is equivalent to the following statement: select * from values (1), (2) t(c); -- Return result +------------+ | c | +------------+ | 1 | | 2 | +------------+
例7:
FROM
句なしでVALUES TABLE
を使用してデータを挿入します。 サンプル文:-- Create a partitioned table named srcp. create table if not exists srcp (key string,value bigint) partitioned by (p string); -- Insert data into the srcp table. insert into table srcp partition (p) select abs(-1), length('abc'), getdate(); -- Query data from the srcp table. select * from srcp; -- Return result +------------+------------+------------+ | key | value | p | +------------+------------+------------+ | 1 | 3 | 2020-11-25 18:39:48 | +------------+------------+------------+
例8: 非定数式を使用する。 サンプル文:
select * from values ('a'),(to_date('20190101', 'yyyyMMdd')),(getdate()) t(d);
次の応答が返されます。
+------------+ | d | +------------+ | 2021-02-01 18:01:38 | | 2019-01-01 00:00:00 | | a | +------------+