INSERT指令說明
指令格式:
INSERT OVERWRITE|INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [(col1,col2 ...)] select_statement FROM from_statement;
格式說明:
在MaxCompute SQL處理資料的過程中,
INSERT OVERWRITE/INTO
用于将計算的結果儲存目标表中。
-
-
insert into:直接向表或表的分區中追加資料。不支援INSERT INTO
到Hash Clustering表。如果您需要插入少量測試資料,可以配合VALUES使用。
-
insert overwrite:先清空表中的原有資料,再向表或分區中插入資料。目前INSERT OVERWRITE
不支援指定插入列的功能,暫時隻能用INSERT INTO
。
MaxCompute的INSERT
文法與通常使用的MySQL或Oracle的INSERT
文法有差别,在INSERT OVERWRITE/INTO
後需要加入TABLE
關鍵字,而非直接使用TABLENAME
。
在反複對同一個分區進行INSERT OVERWRITE
的時候,通過DESCRIBE
檢視到的資料分區Size會不同。這是因為從同一個表的同一個分區SELECT
出來再INSERT OVERWRITE
回相同分區時,檔案切分邏輯發生變化,進而導緻資料的Size發生變化。資料的總長度在INSERT OVERWRITE
前後是不變的,您不必擔心存儲計費會存在問題。
- 當遇到并發寫入時,MaxCompute會根據ACID進行并發寫的保障。關于ACID的具體語義,請參見ACID語義。