
# 通过配置数据导入模板，进行数据导入
在AstroZero上定义数据导入模板，将模板下载到本地，并录入数据。数据录入完成后，通过导入模板导入新数据并按照预定义的脚本处理数据。
#### 前提条件
- 导入数据的数据表已存于AstroZero中，参考[数据对象建模](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0007.html)创建对象CNAME__Class__CST，并自定义字段number。

- 对象"基本信息"页签已勾选"允许API批量访问"，如[图1]所示。
  图1自定义对象Class   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284225.png "点击放大") 
 
#### 操作步骤
1. 参考[开发脚本](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0044.html)，新建一个数据处理脚本如**BulkInsert** 。
   
   1. 创建并编写脚本BulkInsert代码，入参是name和number，该脚本的主要功能是准备好了导入模板的输入字段，用以进行后面步骤的模板导入数据。
      ```
      import * as context from 'context';
      import * as db from 'db';
      import * as sys from 'sys';
       
      @useObject(['CNAME__Class__CST'])
      @action.object({ type: "params" })
      export class ActionInput {
          @action.param({ type: 'Struct', isCollection: true, label: 'BatchRec' })
          records: BatchRec[];
      }
       
      @action.object({ type: "params", label: "BatchRec" })
      export class BatchRec {
          @action.param({ type: 'String', label: 'name' })
          name: string;
       
          @action.param({ type: 'String', label: 'age' })
          number: string;
      }
       
      @action.object({ type: "params" })
      export class ActionOutput {
          @action.param({ type: 'String', label: 'resMessage' })
          resMessage: string;
      }
       
      @useObject(['CNAME__Class__CST'])
      @action.object({ type: "method" })
      export class ActionDemo {
          @action.method({ label: 'insert_to_multi', description: 'insert_to_multi', input: 'ActionInput', output: 'ActionOutput' })
          public insert_to_multi(input: ActionInput): ActionOutput {
              let out = new ActionOutput();
              try {
                  if (input.records.length < 1) {
                      return out
                  };
                  let recsInsert = []
                  for (let i = 0; i < input.records.length; i++) {
                      var recOne = {
                          name: input.records[i].name || 'yes',
                          CNAME__number__CST: input.records[i].number
                      }
                      recsInsert.push(recOne)
                  }
                  console.log('recsInsert = ', recsInsert)
                  if (recsInsert.length < 1) {
                      return
                  }
                  let objMulti = db.object('CNAME__Class__CST');
                  let ret = objMulti.batchInsert(recsInsert);
       
                  out.resMessage = "success"
              }
              catch (error) {
                  context.setError(error.name, error.message)
              }
              return out;
          }
      }
      ```
      
   
   2. 单独运行脚本时没有入参会报错，请输入如下入参：
      ```
      {
      "records": [{
      "name": "20届1班",
      "number": "201"
      }]
      }
      ```
      图2脚本BulkInsert的入参测试   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284249.png "点击放大")
      输出参数如下所示，表示运行脚本符合预期。
      ```
      {
          "resMessage": "success"
      }
      ```
      
   
   3. 单击脚本编辑器上方![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124425.png)启用脚本。
   
   
   
   
2. 定义数据导入模板。 
   1. 参考[登录管理中心](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录AstroZero管理中心。
   
   2. 在左侧导航栏中，选择"系统管理 \> 数据处理 \> 数据导入模板"。
   
   3. 单击"新建"，配置参数信息，若找不到脚本，请确认脚本是否启用。
      图3定义模板   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045112.png "点击放大")
      表1参数说明表 
      | 区域      | 参数 | 说明                                                                                                                           |
      |:---|:---|:---|
      | 基本信息    | 名称 | 数据导入模板的名称。                                                                                                                   |
      | 基本信息    | 脚本 | 提前定义好的数据处理脚本。 您需要在脚本中声明一个集合属性的入参，脚本中入参的变量名与Excel模板中入参变量名保持一致。 |
      | 基本信息    | 描述 | 该数据导入模板的描述信息。                                                                                                                |
      | Excel映射 | 名称 | 定义输出到脚本的入参变量名，请和脚本中入参变量名保持一致。                                                                                                |
      | Excel映射 | 列  | Excel模板中具体的列。按照顺序定义，例如：A、B、C。                                                                                                |
      | Excel映射 | 表头 | Excel模板中第一行的列名。                                                                                                              |
      | Excel映射 | 操作 | 复制或删除操作。                                                                                                                     |
         
      
   
   4. 设置完成后，单击"保存"。
   
   
   
   

3. 在"数据导入模板"列表页面，单击该模板后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124445.png)，下载模板到本地，录入数据并保存Excel。
   
   图4写入数据   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045116.png)
   
   
4. 将修改后的数据导入。 
   1. 在"数据导入模板"列表页面，单击该模板后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932885708.png)，在导入页面拖入上一步录好数据的Excel，单击"导入"，上传数据。
      图5导入数据   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932885712.png "点击放大") 
   
   2. 在弹出的提示框中，单击"确定"。
      界面跳转到"数据导入"页面，等待导入任务的状态为"Completed"后，预览对象的Records布局页面查看具体导入结果。
      图6预览对象Records布局页   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124449.png "点击放大")
      图7查看结果   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124421.png "点击放大") 
   
   
   
   
 
