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

目录

  • 1. 数据导入insert
  • 2. 数据删除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>
  • 如果有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 } ...];

注意事项

  • 如果是单分区表,删除时可以不指定分区。如果是多分区表,删除时必须指定分区;如果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>

说明如下:

  • 因为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> 

你可能感兴趣的:(#,Apache,Doris,doris,insert,数据导入,delete,数据删除)