日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

StarRocks中INSERT INTO語句的使用方式和MySQL等數(shù)據(jù)庫中INSERT INTO語句的使用方式類似, 但在StarRocks中,所有的數(shù)據(jù)寫入都是一個獨立的導(dǎo)入作業(yè) ,所以StarRocks中將INSERT INTO作為一種導(dǎo)入方式介紹。本文為您介紹Insert Into導(dǎo)入的使用場景、相關(guān)配置以及導(dǎo)入示例。

適用場景

  • INSERT INTO導(dǎo)入會同步返回導(dǎo)入流程的運行結(jié)果。

  • 如果僅導(dǎo)入幾條測試數(shù)據(jù),驗證一下StarRocks系統(tǒng)的功能,則可以使用INSERT INTO VALUES語句。

  • 如果將已經(jīng)在StarRocks表中的數(shù)據(jù)進行ETL轉(zhuǎn)換并導(dǎo)入到一個新的StarRocks表中,則可以使用INSERT INTO SELECT語句。

  • 您可以創(chuàng)建一種外部表。例如,MySQL外部表映射一張MySQL系統(tǒng)中的表。然后通過INSERT INTO SELECT語句將外部表中的數(shù)據(jù)導(dǎo)入到StarRocks表中存儲。

注意事項

  • 當(dāng)執(zhí)行INSERT INTO語句時,對于不符合目標(biāo)表格式的數(shù)據(jù)(例如,字符串超長),默認的行為是過濾。對于數(shù)據(jù)不能被過濾的業(yè)務(wù)場景,可以通過設(shè)置會話變量enable_insert_strict為true來確保當(dāng)有數(shù)據(jù)被過濾的時候,INSERT INTO語句不會成功執(zhí)行。

  • 因為StarRocks的INSERT INTO復(fù)用導(dǎo)入數(shù)據(jù)的邏輯,所以每一次INSERT INTO語句都會產(chǎn)生一個新的數(shù)據(jù)版本。因為頻繁小批量導(dǎo)入操作會產(chǎn)生過多的數(shù)據(jù)版本,而過多的小版本會影響查詢的性能,所以不建議頻繁的使用INSERT INTO語句導(dǎo)入數(shù)據(jù)或作為生產(chǎn)環(huán)境的日常例行導(dǎo)入任務(wù)。如果有流式導(dǎo)入或者小批量導(dǎo)入任務(wù)的需求,則可以使用Stream Load或者Routine Load的方式進行導(dǎo)入。

基本操作

語法

INSERT INTO table_name
[ PARTITION (p1, ...) ]
[ WITH LABEL label]
[ (column [, ...]) ]
[ [ hint [, ...] ] ]
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }

參數(shù)描述如下表所示。

參數(shù)

描述

table_name

導(dǎo)入數(shù)據(jù)的目標(biāo)表的名稱。填寫形式為db_name.table_name。

partitions

指定待導(dǎo)入的分區(qū),必須是table_name表中存在的分區(qū),多個分區(qū)名稱用逗號(,)分隔。如果指定目標(biāo)分區(qū),則只會導(dǎo)入符合目標(biāo)分區(qū)的數(shù)據(jù)。如果沒有指定,則默認值為table_name表中所有的分區(qū)。

label

為insert作業(yè)指定一個Label,Label是該INSERT INTO導(dǎo)入作業(yè)的標(biāo)識。每個導(dǎo)入作業(yè),都有一個在單DataBase內(nèi)部唯一的Label。

重要

建議指定Label,而不是由系統(tǒng)自動分配。如果由系統(tǒng)自動分配,在INSERT INTO語句執(zhí)行過程中,因網(wǎng)絡(luò)錯誤導(dǎo)致連接斷開等,則無法得知INSERT INTO是否成功。如果指定Label,則可以再次通過Label查看任務(wù)結(jié)果。

column_name

指定的目的列,必須是table_name表中存在的列。

導(dǎo)入表的目標(biāo)列,可以以任意的順序存在。如果沒有指定目標(biāo)列,則默認值是table_name表的所有列。如果導(dǎo)入表中的某個列不在目標(biāo)列中,則這個列需要有默認值,否則INSERT INTO會失敗。如果查詢語句的結(jié)果列類型與目標(biāo)列的類型不一致,則會調(diào)用隱式類型轉(zhuǎn)化,如果不能進行轉(zhuǎn)化,則INSERT INTO語句會報語法解析錯誤。

expression

需要賦值給某個列的對應(yīng)表達式。

default

讓對應(yīng)列使用默認值。

query

一個普通查詢,查詢的結(jié)果會寫入到目標(biāo)中。查詢語句支持任意StarRocks支持的SQL查詢語句。

values

通過VALUES語句插入一條或者多條數(shù)據(jù)。

重要

VALUES方式僅適用于導(dǎo)入幾條數(shù)據(jù)作為Demo的情況,完全不適用于任何測試和生產(chǎn)環(huán)境。StarRocks系統(tǒng)本身也不適合單條數(shù)據(jù)導(dǎo)入的場景。建議使用INSERT INTO SELECT的方式進行批量導(dǎo)入。

導(dǎo)入結(jié)果介紹

INSERT INTO本身就是一個SQL命令,其返回結(jié)果如下所示:

  • 執(zhí)行成功

    • 示例1

      執(zhí)行insert into tbl1 select * from empty_tbl;導(dǎo)入語句。返回結(jié)果如下。

      Query OK, 0 rows affected (0.02 sec)
    • 示例2

      執(zhí)行insert into tbl1 select * from tbl2;導(dǎo)入語句。返回結(jié)果如下。

      Query OK, 4 rows affected (0.38 sec)
      {'label':'insert_8510c568-9eda-4173-9e36-6adc7d35291c', 'status':'visible', 'txnId':'4005'}
    • 示例3

      執(zhí)行insert into tbl1 with label my_label1 select * from tbl2;導(dǎo)入語句。返回結(jié)果如下。

      Query OK, 4 rows affected (0.38 sec)
      {'label':'my_label1', 'status':'visible', 'txnId':'4005'}
    • 示例4

      執(zhí)行insert into tbl1 select * from tbl2;導(dǎo)入語句。返回結(jié)果如下。

      Query OK, 2 rows affected, 2 warnings (0.31 sec)
      {'label':'insert_f0747f0e-7a35-46e2-affa-13a235f4020d', 'status':'visible', 'txnId':'4005'}

      或者返回如下結(jié)果。

      Query OK, 2 rows affected, 2 warnings (0.31 sec)
      {'label':'insert_f0747f0e-7a35-46e2-affa-13a235f4020d', 'status':'committed', 'txnId':'4005'}

    返回結(jié)果中涉及的參數(shù)描述如下表所示。

    參數(shù)

    描述

    rows affected

    表示總共有多少行數(shù)據(jù)已導(dǎo)入。

    warnings

    表示被過濾的行數(shù)。

    status

    導(dǎo)入數(shù)據(jù)是否可見。參數(shù)值如下:

    • visible:表示可見。

    • committed:表示不可見。

    txnId

    insert對應(yīng)的導(dǎo)入事務(wù)的ID。

    err

    顯示一些非預(yù)期錯誤。當(dāng)需要查看被過濾的行時,您可以使用SHOW LOAD語句,返回結(jié)果中的URL可以用于查詢錯誤的數(shù)據(jù)。

  • 執(zhí)行失敗

    執(zhí)行失敗表示沒有成功導(dǎo)入任何數(shù)據(jù)。

    例如,執(zhí)行insert into tbl1 select * from tbl2 where k1 = "a";導(dǎo)入語句。返回結(jié)果如下。

    ERROR 1064 (HY000): all partitions have no load data. url: [http://10.74.167.16:8042/api/_load_error_log?file=__shard_2/error_log_insert_stmt_ba8bb9e158e4879-ae8de8507c0bf8a2_ba8bb9e158e4879_ae8de8507c0bf8a2](http://10.74.**.**:8042/api/_load_error_log?file=__shard_2/error_log_insert_stmt_ba8bb9e158e4879-ae8de8507c0bf8a2_ba8bb9e158e4879_ae8de8507c0bf8a2)

    其中,返回信息中的ERROR 1064 (HY000): all partitions have no load data顯示失敗原因,后面的URL可以用于查詢錯誤的數(shù)據(jù)。

相關(guān)配置

FE配置

timeout:導(dǎo)入任務(wù)的超時時間,單位是秒。導(dǎo)入任務(wù)在設(shè)定的timeout時間內(nèi)未完成則會被系統(tǒng)取消,變成CANCELLED。目前INSERT INTO并不支持自定義導(dǎo)入的timeout時間,所有INSERT INTO導(dǎo)入的超時時間是統(tǒng)一的,默認的timeout時間為1小時。如果導(dǎo)入任務(wù)無法在規(guī)定時間內(nèi)完成,則需要調(diào)整FE的insert_load_default_timeout_second參數(shù)。

Session變量

參數(shù)

描述

enable_insert_strict

INSERT INTO導(dǎo)入本身不能控制導(dǎo)入可容忍的錯誤率。您只能通過Session參數(shù)enable_insert_strict來控制導(dǎo)入可容忍的錯誤率。

  • true(默認值):表示如果有一條數(shù)據(jù)錯誤,則導(dǎo)入失敗。

  • false:表示至少有一條數(shù)據(jù)被正確導(dǎo)入,則返回成功。如果有失敗數(shù)據(jù),則還會返回一個Label。

    可通過SET enable_insert_strict = false來設(shè)置。

query_timeout

INSERT INTO本身也是一個SQL命令,因此INSERT INTO語句也受到Session量query_timeout的限制。可以通過SET query_timeout = xxx來增加超時時間,單位是秒。

導(dǎo)入示例

創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表

  1. 執(zhí)行以下命令,創(chuàng)建數(shù)據(jù)庫。

    CREATE DATABASE IF NOT EXISTS load_test;
  2. 執(zhí)行以下命令,指定數(shù)據(jù)庫。

    USE load_test;
  3. 執(zhí)行以下命令,創(chuàng)建數(shù)據(jù)表。

    CREATE TABLE insert_wiki_edit
    (
        event_time DATETIME,
        channel VARCHAR(32) DEFAULT '',
        user VARCHAR(128) DEFAULT '',
        is_anonymous TINYINT DEFAULT '0',
        is_minor TINYINT DEFAULT '0',
        is_new TINYINT DEFAULT '0',
        is_robot TINYINT DEFAULT '0',
        is_unpatrolled TINYINT DEFAULT '0',
        delta INT SUM DEFAULT '0',
        added INT SUM DEFAULT '0',
        deleted INT SUM DEFAULT '0'
    )
    AGGREGATE KEY(event_time, channel, user, is_anonymous, is_minor, is_new, is_robot, is_unpatrolled)
    PARTITION BY RANGE(event_time)
    (
        PARTITION p06 VALUES LESS THAN ('2015-09-12 06:00:00'),
        PARTITION p12 VALUES LESS THAN ('2015-09-12 12:00:00'),
        PARTITION p18 VALUES LESS THAN ('2015-09-12 18:00:00'),
        PARTITION p24 VALUES LESS THAN ('2015-09-13 00:00:00')
    )
    DISTRIBUTED BY HASH(user) BUCKETS 10
    PROPERTIES("replication_num" = "1");

通過VALUES導(dǎo)入數(shù)據(jù)

執(zhí)行以下命令,通過VALUES語句導(dǎo)入數(shù)據(jù)。

INSERT INTO insert_wiki_edit VALUES("2015-09-12 00:00:00","#en.wikipedia","GELongstreet",0,0,0,0,0,36,36,0),("2015-09-12 00:00:00","#ca.wikipedia","PereBot",0,1,0,1,0,17,17,0);

返回信息如下。

Query OK, 2 rows affected (0.29 sec)
{'label':'insert_1f12c916-5ff8-4ba9-8452-6fc37fac2e75', 'status':'visible', 'txnId':'601'}

通過SELECT導(dǎo)入數(shù)據(jù)

執(zhí)行以下命令,通過SELECT語句導(dǎo)入數(shù)據(jù)。

INSERT INTO insert_wiki_edit WITH LABEL insert_load_wikipedia SELECT * FROM routine_wiki_edit;

返回信息如下。

Query OK, 18203 rows affected (0.40 sec)
{'label':'insert_load_wikipedia', 'status':'visible', 'txnId':'618'}