# 管理Paimon Catalog
在AI DataLake Flink作业上配置Paimon Catalog后，您可以通过AI DataLake Flink直接访问华为云数据湖构建（LakeFormation）中的Paimon表。本文为您介绍如何在AI DataLake Flink作业中创建Paimon Catalog，以及管理Paimon数据库和Paimon表。
**操作方法：** 使用Postman等工具，调用[创建FlinkJob作业](https://support.huaweicloud.com/api-aidatalake/RunFlinkJob.html)API接口提交Flink作业。
#### 创建Paimon Catalog
```
CREATE CATALOG lf_paimon_catalog
WITH
  (
    'type' = 'paimon',
    'metastore' = 'lakeformation'
  );
```
配置项参数说明如下。
| 配置项                      | 说明                                                                                                                   | 是否必填 | 备注                                      |
|:---|:---|:---|:---|
| type                       | Catalog类型。                                                                                                           | 是     | 固定值为paimon。                              |
| metastore                  | Catalog实现类型。                                                                                                          | 是      | 固定值为lakeformation。                       |
| lakeformation.catalog-name | 指定访问lakeformation中的catalog名称。 此名称需要与您在云数据湖构建（LakeFormation）中创建的Catalog名称保持一致，即可完成映射。 | 否      | 默认为Flink引擎侧的catalogName，即lf_paimon_catalog。 |
   
#### 管理Paimon数据库
- **创建数据库**
  ```
  CREATE DATABASE IF NOT EXISTS lf_paimon_catalog.paimon_db
  WITH (
    'location' = 'obs://bucket/path/paimon-warehouse/paimon_db'
  );
  ```
  
- **删除数据库**
  ```
  DROP DATABASE lf_paimon_catalog.paimon_db; --只能删除内部没有任何表的数据库
  ```
  
 
#### 管理Paimon表
- 创建表 在名为lf_paimon_catalog的Catalog下的paimon_db的数据库中，创建一张分区表。代码示例如下。
  ```
  CREATE TABLE lf_paimon_catalog.paimon_db.paimon_table (
    id BIGINT,
    data STRING,
    PRIMARY KEY (`id`,data) NOT ENFORCED
  ) PARTITIONED BY (data);
  ```
  
- 修改表结构
  
  | **操作**       | **代码示例**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|
  | 修改/添加表属性  | ALTER TABLE my_table SET ( 'write-buffer-size' = '256 MB' );                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | 移除表属性        | ALTER TABLE my_table RESET ('write-buffer-size');                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 修改/添加表注释 | ALTER TABLE my_table SET ( 'comment' = 'table comment' );                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 移除表注释      | ALTER TABLE my_table RESET ('comment');                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | 临时修改表参数    | 您可以通过在表名后添加SQL Hint的方式，在写入表时临时修改表参数。临时修改的表参数仅对当前SQL作业生效。 - 在写入my_table表时，临时将upsert-enabled设为true。 ``` INSERT INTO tableName /*+ OPTIONS('upsert-enabled'='true') */SELECT ...; ```     - 在消费my_table表时，临时将monitor-interval设为10s。 ``` SELECT * FROM my_table /*+ OPTIONS('monitor-interval'='10s') */ ```    |
  | 重命名表       | 将表的名称从my_table修改为my_table_new。仅EXTERNAL表可修改。 ``` ALTER TABLE my_table RENAME TO my_table_new; ```                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 添加新列     | 将类型为INT的c1列和类型为STRING的c2列添加在my_table表的末尾。 ``` ALTER TABLE my_table ADD (c1 INT, c2 STRING); ```                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | 重命名列       | 将my_table表中名称为c0的列重命名为c1。 ``` ALTER TABLE my_table RENAME c0 TO c1; ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | 删除列          | 将my_table表中c1和c2两列删除。 ``` ALTER TABLE my_table DROP (c1, c2); ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 修改列注释     | 将my_table表中buy_count列的注释改为this is buy count。 ``` ALTER TABLE my_table MODIFY buy_count BIGINT COMMENT 'this is buy count'; ```                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | 修改列顺序      | - 将my_table表中名称为col_a，类型为DOUBLE的列移动到开头。 ``` ALTER TABLE my_table MODIFY col_a DOUBLE FIRST; ```     - 将my_table表中名称为col_a，类型为DOUBLE的列移动到col_b列的后面。 ``` ALTER TABLE my_table MODIFY col_a DOUBLE AFTER col_b; ```                                                                                                                                       |
  | 修改列类型     | ALTER TABLE my_table MODIFY col_a DOUBLE;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
     
  
- 删除表
  ```
  DROP TABLE lf_paimon_catalog.paimon_db.paimon_table;
  ```
  
 
