• Apache Doris的数据导入insert、数据删除delete


    1. 数据导入insert

    Insert Into命令包含以下两种。其中with label是可选的,默认会自动生成

    • insert into tb with label label_name select …;
    • insert into tb with label label_name (col1, col2, …) values (…), (…), …;:不建议用于生产环境

    示例

    mysql> insert into person with label person_label (id, name, age) values(1, 'name1', 11);
    Query OK, 1 row affected (0.15 sec)
    {'label':'person_label', 'status':'VISIBLE', 'txnId':'2016'}
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 如果有warnings,表示被过滤的行数。查看被过滤的行使用show load where label = "person_label";
    • 查看insert的数据可见状态使用show transaction where id = 2016;
    • 查看同一会话最近一次insert操作的结果使用show last insert;。有的语言的客户端能获取到,有的语言的客户端获取不到

    2. 数据删除delete

    delete是一个同步的操作。需要指定表、分区、删除的条件来筛选要删除的数据,并将会同时删除base表和rollup表的数据

    语法

            DELETE FROM table_name [PARTITION partition_name | PARTITIONS (p1, p2)]
            WHERE
            column_name1 op { value | value_list } [ AND column_name2 op { value | value_list } ...];
    
    • 1
    • 2
    • 3

    注意事项

    • 如果是单分区表,删除时可以不指定分区。如果是多分区表,删除时必须指定分区;如果delete_without_partition会话变量为true,删除时可以不指定分区,表示将删除应用到所有分区
    • where后面的条件谓词只能针对Key列,并且谓词之间,只能通过AND连接
    • delete是一种逻辑删除,会产生一个新的数据版本。查询时会对删除的数据进行过滤,所以会影响查询性能。所以不要频繁的进行delete
    • 数据的真正删除是在BE进行数据Compaction时进行的
    • 执行delete命令时对应的表,不能有正在进行的导入任务(包括pending、ETL、loading)

    示例

    mysql> delete from person partition beijing where id = 1;
    Query OK, 0 rows affected (0.48 sec)
    {'label':'delete_a70a7a1f-06ca-4e00-a2e7-206ed159356a', 'status':'VISIBLE', 'txnId':'2003'}
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    说明如下:

    • 因为delete是逻辑删除,所以永远是0 rows affected
    • 有时delete操作提交完成,但还未发布版本变成VISIBLE,超过一定时间也会返回结果,此时status为COMMITTED

    查看数据库的delete状态

    mysql> show delete from test_db;
    +-----------+----------------+---------------------+-----------------+----------+
    | TableName | PartitionName  | CreateTime          | DeleteCondition | State    |
    +-----------+----------------+---------------------+-----------------+----------+
    | person    | beijing        | 2022-08-03 15:53:36 | id EQ "1"       | FINISHED |
    +-----------+----------------+---------------------+-----------------+----------+
    1 rows in set (0.08 sec)
    
    mysql> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    可下载《2022年中国数字化办公市场研究报告》详解1768亿元市场
    java优先级队列PriorityQueue
    Ingress Controller
    Ubuntu上使用SSH连接到CentOS系统
    Go 语言 new 和 make 关键字的区别
    变分推断公式推导
    秩序的美——队列的基础实现
    戏说领域驱动设计(十一)——纠偏
    硬核!最全Java面试宝典+Java核心知识集一箭双雕杠秋招
    动态分区分配算法之首次适应算法,最佳适应算法,最坏适应算法以及邻近适应算法
  • 原文地址:https://blog.csdn.net/yy8623977/article/details/126142173