插入

適用於:勾選“是”磚的SQL勾選“是”磚運行時

將新行插入到表中,並可選地截斷表或分區。可以通過值表達式或查詢結果指定插入的行。

Databricks SQL僅對Delta Lake表支持此語句。

語法

插入覆蓋|表格table_name分區條款column_name(,...查詢插入表格table_name取代在哪裏謂詞查詢

請注意

當你插入支持Delta表、模式強製和演化。如果列的數據類型不能安全地轉換為Delta表的數據類型,則拋出運行時異常。如果模式演化啟用時,新列可以作為模式(或嵌套列)的最後一列存在,以便模式演進。

參數

  • 覆蓋

    如果你指定覆蓋以下情況適用:

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

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

    如果你指定插入的所有行都是現有行的相加。

  • table_name

    標識要插入的表。名稱中不能包含時間規範.如果找不到表,數據庫會拋出一個TABLE_OR_VIEW_NOT_FOUND錯誤。

  • 分區條款

    為插入指定目標分區的可選參數。您也可以隻指定部分分區。

    當指定靜態分區時價值此列在插入列列表中不能重複。

  • column_name[,…])

    表中列的可選列表。insert命令最多隻能從表中指定任何特定列一次。

    適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

    • 如果這個命令省略了一個列,Databricks SQL會分配相應的默認值。

    • 如果目標表模式沒有為插入的列定義任何默認值,Databricks SQL將分配如果列為空。否則,Databricks SQL將引發一個錯誤。

    類中已賦值的列除外,不提供列列表等同於指定所有列分區子句中定義的順序。

  • 替代的地方boolean_expression

    適用於:勾選“是”Databricks運行時12.0及以上

    如果table_name是Delta Lake表,刪除行匹配嗎boolean_expression在插入任何匹配的行之前布爾表達式中指定的查詢.行查詢不匹配boolean_expression將被忽略。

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

    看到使用replaceWhere任意選擇覆蓋

  • 查詢

    生成要插入的行的查詢。

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

    如果數據類型不能安全地轉換為匹配的列數據類型,則拋出運行時異常。

    適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

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

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

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

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

例子

插入

使用值插入

>創建表格學生的名字VARCHAR64),地址VARCHAR64默認的“未知”student_idINT分區通過student_id);—單行插入使用' VALUES '子句指定所有列。>插入學生艾米·史密斯的聖何塞公園大道123號111111);——單行插入使用隱式默認地址>插入學生的名字student_id格雷森·米勒的222222);——單行插入使用顯式的DEFAULT關鍵字的地址>插入學生“Youna金”默認的333333);—使用' VALUES '子句進行多行插入>插入學生“鮑勃·布朗”庫比蒂諾泰勒街456號444444),“凱茜約翰遜”帕洛奧圖Race大街789號555555);—使用DEFAULT和字麵量混合的多行插入>插入學生“趙格溫妮斯”“羅克波特主街120號”666666),“傑克遜彼得森”默認的777777);>選擇學生的名字地址student_id---------------- ------------------------ ----------艾米史密斯123公園大街111111格雷森米勒未知的222222Youna未知的333333鮑勃棕色(的)456泰勒庫比蒂諾444444凱西約翰遜789比賽大街加州中音555555格溫妮斯120主要Rockport666666傑克遜彼得森未知的777777

使用子查詢進行插入

——假設已經創建並填充了persons表。>選擇的名字地址ssn------------- ------------------------- ---------朵拉威廉姆斯134森林大街梅洛公園123456789埃迪戴維斯245市場苗必達345678901>插入學生分區student_id444444選擇的名字地址在哪裏的名字“朵拉·威廉姆斯”>選擇學生的名字地址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

插入目錄

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

用列列表插入

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

同時使用分區規範和列列表進行插入

>插入學生分區student_id11215017地址的名字“杭州”“小肯特·姚”);>選擇學生在哪裏student_id11215017的名字地址student_id------------ ---------------------- ----------肯特杭州中國11215017

替代的地方

>創建表格銷售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_datetx_date---------- ------2022-10-0112372022-10-0223782022-10-0424562022-10-0563282022-11-013214

插入覆蓋

使用條款

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

使用子查詢進行插入

——假設已經創建並填充了persons表。>選擇的名字地址ssn------------- ------------------------- ---------朵拉威廉姆斯134森林大街梅洛公園123456789埃迪戴維斯245市場苗必達345678901>插入覆蓋學生分區student_id222222選擇的名字地址在哪裏的名字“朵拉·威廉姆斯”>選擇學生的名字地址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

插入覆蓋目錄

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