INSERT - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

INSERT

將新資料列插入資料表中。您可以插入具有VALUES語法的單一資料列、具有VALUES語法的多資料列,或查詢結果定義的一或多個資料列 (INSERT INTO...SELECT)。

注意

我們強烈鼓勵您使用 COPY 命令來載入大量資料。使用個別INSERT陳述式填入資料表可能會非常慢。或者,如果您的資料已存在於其他 Amazon Redshift 資料庫資料表中,請使用 INSERTINTOSELECT或 CREATE TABLE AS 來改善效能。如需使用 COPY命令載入資料表的詳細資訊,請參閱 在 Amazon Redshift 中載入資料

注意

單一SQL陳述式的大小上限為 16 MB。

語法

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

參數

table_name

暫時性或持久性資料表。只有資料表的擁有者或具有INSERT權限的使用者才能插入資料列。如果您使用查詢子句插入資料列,則必須具有查詢中命名SELECT資料表的權限。

注意

使用 INSERT(外部資料表) 將SELECT查詢的結果插入外部目錄上的現有資料表。如需詳細資訊,請參閱INSERT (外部資料表)

欄位

您可以將值插入資料表的一個或多個資料欄。您可以依任意順序列出目標資料欄名稱。如果您未指定資料欄清單,則要插入的值必須對應至CREATETABLE陳述式中宣告的順序中的資料表資料欄。若要插入的值數目少於資料表中的資料欄數,則會在前 n 個資料欄中載入。

宣告的預設值或 Null 值會載入陳述INSERT式中未列出的任何資料欄 (隱含或明確)。

DEFAULT VALUES

若在建立資料表時對資料表中的資料欄指派預設值,請使用這些關鍵字插入完全由預設值組成的資料列。若有任何資料欄未包含預設值,則會將 null 插入這些資料欄。如果宣告任何資料欄NOTNULL,則INSERT陳述式會傳回錯誤。

VALUES

使用此關鍵字插入一個或多個資料列,每列包含一個或多個值。每一列的VALUES清單必須與資料欄清單相符。若要插入多個資料列,請使用逗號分隔符號分隔每份表達式清單。請勿重複VALUES關鍵字。多列INSERT陳述式的所有VALUES清單必須包含相同數量的值。

運算式

單一值,或判斷值為單一值的表達式。每個值都必須與其插入所在資料欄的資料類型相容。若值的資料類型與資料欄的宣告資料類型不相符,則會在可能的情況下自動轉換成相容的資料類型。例如:

  • 十進位值1.1會以 的形式插入資料INT欄1

  • 十進位值100.8976會以 的形式插入 DEC(5,2) 欄中100.90

您可以在表達式中包含類型轉換語法,藉此明確將值轉換成相容的資料類型。例如,如果資料表 T1 COL1中的資料欄是 CHAR(3) 資料欄:

insert into t1(col1) values('Incomplete'::char(3));

此陳述式會將值 Inc 插入資料欄。

對於單列INSERTVALUES陳述式,您可以使用純量子查詢作為表達式。子查詢的結果會插入適當的資料欄中。

注意

不支援將子查詢作為多列INSERTVALUES陳述式的表達式。

DEFAULT

使用此關鍵字可依資料表建立時所定義,插入資料欄的預設值。若資料欄沒有預設值,則會插入 null。如果該資料欄在CREATETABLE陳述式中沒有為其指派明確的預設值,則您無法將預設值插入有NOTNULL限制的資料欄。

query

藉由定義任何查詢將一個或多個資料列插入資料表。查詢產生的所有資料列都會插入資料表中。查詢必須傳回與資料表中資料欄相容的資料欄清單,但資料欄名稱不需相符。

使用須知

注意

我們強烈鼓勵您使用 COPY 命令來載入大量資料。使用個別INSERT陳述式填入資料表可能會非常慢。或者,如果您的資料已存在於其他 Amazon Redshift 資料庫資料表中,請使用 INSERTINTOSELECT或 CREATE TABLE AS 來改善效能。如需使用 COPY命令載入資料表的詳細資訊,請參閱 在 Amazon Redshift 中載入資料

插入值的資料格式必須符合CREATETABLE定義指定的資料格式。

將大量新資料列插入資料表之後:

  • 清空資料表以回收儲存空間和重新排序資料列。

  • 分析資料表以更新查詢規劃器的統計資訊。

當值插入DECIMAL資料欄且超過指定的規模時,載入的值會視需要四捨五入。例如,當 的值20.259插入 DECIMAL(8,2) 資料欄時,儲存的值為 20.26

您可以插入 GENERATED BY DEFAULT AS IDENTITY資料欄。您可以使用您提供的值IDENTITY來更新定義為 GENERATED BY DEFAULT AS 的資料欄。如需詳細資訊,請參閱GENERATED BY DEFAULT AS IDENTITY