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語義。