插入

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

將新行插入一個表和可選地對表或截斷分區。你指定的插入的行值表達式或一個查詢的結果。

磚SQL支持這句話隻對三角洲湖表。

語法

插入{覆蓋|}(]table_name(分區條款]((column_name(,])|通過的名字]查詢插入(]table_name取代在哪裏謂詞查詢

請注意

當你插入δ表模式支持執法和演化。如果一個列的數據類型不能安全地把δ表的數據類型,一個運行時異常。如果模式演化啟用新列可以作為最後一列你的存在模式(或嵌套列)模式演變。

參數

  • 覆蓋

    如果您指定覆蓋以下應用:

    • 沒有一個partition_spec表插入第一行之前被截斷。

    • 否則,匹配的所有分區partition_spec在插入之前截斷第一行。

    如果您指定所有行插入附加到現有的行。

  • table_name

    標識表插入。必須不包含一個名稱時間規範。如果表不能發現磚了TABLE_OR_VIEW_NOT_FOUND錯誤。

    table_name不得外國表。

  • 分區條款

    一個可選參數,指明目標分區的插入。你也隻是部分指定分區。

    當指定靜態分區=價值這一列不能重複在插入列清單中。

  • (column_name[…])

    一個可選列表列在表中。插入命令可以指定任何特定列的表最多一次。

    適用於:檢查標記是的磚的SQLSQL倉庫2023.20版本或更高版本檢查標記是的磚運行時12.2及以上

    • 如果該命令省略了一個專欄,磚SQL分配相應的默認值。

    • 如果目標表模式沒有定義任何默認值插入列,磚SQL分配如果列可以為空。否則,磚SQL提出了一個錯誤。

    提供沒有相當於指定所有列列名單,除了那些分配值分區條款,在訂單表中定義。

  • 通過的名字

    適用於:檢查標記是的磚運行時13.3及以上

    當這一條款是用來代替顯式列列表,命令使用公開的列名查詢產生的列列表的順序查詢。與一個明確的列列表,每一列必須存在於目標表,不得重複。如果一個列中table_name不是隱含列列表的一部分默認的值代替。

    通過的名字也匹配的屬性結構體的名字。

    沒有列查詢匹配一個列中指定的嗎分區條款或任何生成的列。

  • 替代的地方boolean_expression

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時12.0及以上

    如果table_name是一個三角洲湖表,刪除行匹配boolean_expression在插入任何行匹配布爾表達式中指定的查詢。行查詢它不匹配boolean_expression將被忽略。

    boolean_expression可以是任何表達式,計算結果類型嗎布爾

    看到任意選擇與replaceWhere覆蓋

  • 查詢

    一個查詢產生行插入。

    你必須匹配查詢返回的列數與指定的或隱含插入列清單。

    如果一個數據類型不能安全地把匹配的列的數據類型,一個運行時異常。

    適用於:檢查標記是的磚的SQLSQL倉庫2022.35版本或更高版本檢查標記是的磚運行時11.2及以上

    • 如果查詢由一個條款的表達式可以默認的

    • 如果查詢由一個選擇條款的named_expression可以默認的

    • 默認的將插入顯式定義的默認的表達式中相應的列table_name,或如果沒有定義。

    如果模式演化啟用新列可以作為最後一列你的存在模式(或嵌套列)模式演變。

例子

插入

插入使用值

>創建學生(的名字VARCHAR(64年),地址VARCHAR(64年)默認的“未知”,student_idINT)分區通過(student_id);使用“值”——單行插入條款指定所有列。>插入學生(艾米·史密斯的,公園大街123號,聖何塞,111111年);——單行插入使用一個隱式的默認地址>插入學生(的名字,student_id)(格雷森·米勒的,222222年);——單行插入使用顯式的默認關鍵字地址>插入學生(“Youna金”,默認的,333333年);使用“值”條款——多行插入>插入學生(“鮑勃·布朗”,456年泰勒聖,庫比蒂諾,444444年),(“凱茜約翰遜”,“種族大街789號,帕洛阿爾托”,555555年);——多行插入使用的默認和文本>插入學生(“趙格溫妮斯”,120年主要聖Rockport”,666666年),(“傑克遜彼得森”,默認的,777777年);>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年格雷森米勒未知的222222年Youna未知的333333年鮑勃布朗456年泰勒,庫比蒂諾444444年凱西約翰遜789年比賽大街,加州中音555555年格溫妮斯120年主要,Rockport666666年傑克遜彼得森未知的777777年

插入使用子查詢

——假設人表已經創建並填充。>選擇*;的名字地址ssn- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -朵拉威廉姆斯134年森林大街,梅洛公園123456789埃迪戴維斯245年市場,苗必達345678901>插入學生分區(student_id=444444年)選擇的名字,地址在哪裏的名字=“朵拉·威廉姆斯”;>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年鮑勃布朗456年泰勒,庫比蒂諾222222年凱西約翰遜789年比賽大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公園444444年

插入使用條款

——假設visiting_students表已經創建並填充。>選擇*visiting_students;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒勞倫特345年,倫敦777777年戈登馬丁779年大街,牛津大學888888年>插入學生visiting_students;>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年鮑勃布朗456年泰勒,庫比蒂諾222222年凱西約翰遜789年比賽大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公園444444年弗勒勞倫特345年,倫敦777777年戈登馬丁779年大街,牛津大學888888年

插入一個目錄

>創建學生(的名字VARCHAR(64年),地址VARCHAR(64年),student_idINT)分區通過(student_id)位置“/ mnt / user1 /學生”;>插入δ' /mnt/user1/學生(艾米·史密斯的,公園大街123號,聖何塞,111111年);>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年

插入一列名單

>插入學生(地址,的名字,student_id)(“杭州”,“肯特麼”,11215016);>選擇*學生在哪裏的名字=“肯特麼”;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -肯特杭州,中國11215016

插入一個分區規範和一個列清單

>插入學生分區(student_id=11215017)(地址,的名字)(“杭州”,“肯特麼。”);>選擇*學生在哪裏student_id=11215017;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -肯特杭州,中國11215017

插入使用的名字條款

>創建表目標(n INT,文本字符串,STRUCT b < INT, INT >);>插入目標按名稱選擇named_struct (“b”2“, 1)年代,0 n,“數據”作為文本;從目標> SELECT *;0數據{“a”: 1、“b”: 2} >創建或替換表目標(arr n INT數組< STRUCT < a INT, INT > >);>插入目標按名稱選擇陣列(named_struct (“b”2“, 1))作為加勒比海盜,0 n;>插入目標按名稱選擇陣列(named_struct (“b”2“, 1))加勒比海盜;從目標> SELECT *;0 [{“a”: 1、“b”: 2}]零[{“a”: 1、“b”: 2}] >插入目標按名稱選擇數組(named_struct (' b ' 2 ' ', 1))作為加勒比海盜,0 badname;錯誤>插入目標按名稱選擇陣列(named_struct (“b”2“, 1))作為加勒比海盜,0 n, n 1;錯誤:INSERT_COLUMN_ARITY_MISMATCH.TOO_MANY_DATA_COLUMNS

替代的地方

>創建銷售(tx_date日期,整數);>插入銷售(日期“2022-10-01”,1234年),(日期“2022-10-02”,2345年),(日期“2022-10-03”,3456年),(日期“2022-11-01”,3214年);——任何行替換為一個事務日期2022年10月。>插入銷售取代在哪裏tx_date之間的“2022-10-01”“2022-10-31”(日期“2022-10-01”,1237年),(日期“2022-10-02”,2378年),(日期“2022-10-04”,2456年),(日期“2022-10-05”,6328年);>選擇*銷售訂單通過tx_date;tx_date- - - - - - - - - - - - - - - - -2022年- - - - - -10- - - - - -011237年2022年- - - - - -10- - - - - -022378年2022年- - - - - -10- - - - - -042456年2022年- - - - - -10- - - - - -05年6328年2022年- - - - - -11- - - - - -013214年

插入覆蓋

插入使用條款

——假設學生已經創建並填充表。>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年鮑勃布朗456年泰勒,庫比蒂諾222222年凱西約翰遜789年比賽大街,加州中音333333年朵拉威廉姆斯134年森林大街,梅洛公園444444年弗勒勞倫特345年,倫敦777777年戈登馬丁779年大街,牛津大學888888年海倫戴維斯469年任務,迭戈999999年傑森908年,薩拉托加121212年>插入覆蓋學生(“Ashua山”,456年埃裏卡Ct,庫比蒂諾,111111年),(“布萊恩·裏德”,Kern大街723號,帕洛阿爾托,222222年);>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ashua456年艾麗卡Ct,庫比蒂諾111111年布萊恩裏德723年克恩大街,加州中音222222年

插入使用子查詢

——假設人表已經創建並填充。>選擇*;的名字地址ssn- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -朵拉威廉姆斯134年森林大街,梅洛公園123456789埃迪戴維斯245年市場,苗必達345678901>插入覆蓋學生分區(student_id=222222年)選擇的名字,地址在哪裏的名字=“朵拉·威廉姆斯”;>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ashua456年艾麗卡Ct,庫比蒂諾111111年朵拉威廉姆斯134年森林大街,梅洛公園222222年

插入使用條款

——假設visiting_students表已經創建並填充。>選擇*visiting_students;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒勞倫特345年,倫敦777777年戈登馬丁779年大街,牛津大學888888年>插入覆蓋學生visiting_students;>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -弗勒勞倫特345年,倫敦777777年戈登馬丁779年大街,牛津大學888888年

插入覆蓋一個目錄

>創建學生(的名字VARCHAR(64年),地址VARCHAR(64年),student_idINT)分區通過(student_id)位置“/ mnt / user1 /學生”;>插入覆蓋δ' /mnt/user1/學生(艾米·史密斯的,公園大街123號,聖何塞,111111年);>選擇*學生;的名字地址student_id- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -艾米史密斯123年公園大街,111111年