
# 插入数据至HBase表
#### 功能描述
INSERT INTO命令将DLI表中的数据插入到已关联的hbase表中。
#### 语法格式
- 将SELECT查询结果插入到表中：
  ```
  INSERT INTO DLI_TABLE
    SELECT field1,field2...
    [FROM DLI_TEST]
    [WHERE where_condition]
    [LIMIT num]
    [GROUP BY field]
    [ORDER BY field] ...;
  ```
  
- 将某条数据插入到表中：
  ```
  INSERT INTO DLI_TABLE
    VALUES values_row [, values_row ...];
  ```
  
 
#### 关键字
SELECT对应关键字说明请参考[基本语句](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0150.html#dli_08_0150)。
#### 参数说明
表1参数描述 
| **参数**                 | **描述**                                  |
|:---|:---|
| DLI_TABLE              | 已创建跨源连接的DLI表名称。                         |
| DLI_TEST               | 为包含待查询数据的表。                             |
| field1,field2...，field | 表"DLI_TEST"中的列值，需要匹配表"DLI_TABLE"的列值和类型。 |
| where_condition        | 查询过滤条件。                                 |
| num                    | 对查询结果进行限制，num参数仅支持INT类型。                |
| values_row             | 想要插入到表中的值，列与列之间用逗号分隔。                   |
   
#### 注意事项
- DLI表必须已经存在。
- 在"[创建表关联HBase](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0119.html#dli_08_0119)"章节创建的表中，OPTIONS里的Cols指定的列族如果不存在，insert into执行时会报错。
- 如果插入的(rowkey, 列族, 列)已存在，则执行插入操作时，会覆盖hbase中相同的(rowkey, 列族, 列)。
- 不建议对同一张表并发插入数据，因为有一定概率发生并发冲突，导致插入失败。
- 不支持INSERT OVERWRITE语法。
 
#### 示例
- 查询表"user"中的数据插入表"test"中。
  ```
  INSERT INTO test
    SELECT ATTR_EXPR
    FROM user
    WHERE user_name='cyz'
    LIMIT 3
    GROUP BY user_age
  ```
  
- 插入数据"1"到表"test"中
  ```
  INSERT INTO test 
    VALUES (1);
  ```
  
 
