更新时间:2024-07-11 GMT+08:00
分享

通过配置数据导入模板,进行数据导入

在AstroZero上定义数据导入模板,将模板下载到本地,并录入数据。数据录入完成后,通过导入模板导入新数据并按照预定义的脚本处理数据。

前提条件

  • 导入数据的数据表已存于AstroZero中,参考数据对象建模创建对象CNAME__Class__CST,并自定义字段number。
  • 对象“基本信息”页签已勾选“允许API批量访问”,如图1所示。
    图1 自定义对象Class

操作步骤

  1. 参考开发脚本,新建一个数据处理脚本如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的入参测试

      输出参数如下所示,表示运行脚本符合预期。

      {
          "resMessage": "success"
      }
    3. 单击脚本编辑器上方启用脚本。

  2. 定义数据导入模板。

    1. 参考登录管理中心中操作,登录AstroZero管理中心。
    2. 在左侧导航栏中,选择“系统管理 > 数据处理 > 数据导入模板”。
    3. 单击“新建”,配置参数信息,若找不到脚本,请确认脚本是否启用。
      图3 定义模板
      表1 参数说明表

      区域

      参数

      说明

      基本信息

      名称

      数据导入模板的名称。

      脚本

      提前定义好的数据处理脚本。

      您需要在脚本中声明一个集合属性的入参,脚本中入参的变量名与Excel模板中入参变量名保持一致。

      描述

      该数据导入模板的描述信息。

      Excel映射

      名称

      定义输出到脚本的入参变量名,请和脚本中入参变量名保持一致。

      Excel模板中具体的列。按照顺序定义,例如:A、B、C。

      表头

      Excel模板中第一行的列名。

      操作

      复制或删除操作。

    4. 设置完成后,单击“保存”。

  1. 在“数据导入模板”列表页面,单击该模板后的,下载模板到本地,录入数据并保存Excel。

    图4 写入数据

  2. 将修改后的数据导入。

    1. 在“数据导入模板”列表页面,单击该模板后的,在导入页面拖入上一步录好数据的Excel,单击“导入”,上传数据。
      图5 导入数据
    2. 在弹出的提示框中,单击“确定”。
      界面跳转到“数据导入”页面,等待导入任务的状态为“Completed”后,预览对象的Records布局页面查看具体导入结果。
      图6 预览对象Records布局页
      图7 查看结果

相关文档