更新时间:2024-04-25 GMT+08:00
分享

如何通过模板导入对象数据

使用说明

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

前提条件

导入数据的数据表已存于AstroZero中,即参考定义自定义对象的字段(Fields)中操作,创建对象命名空间__Class__CST,并自定义字段number。

图1 新建字段number
图2 设置数据长度

新建数据处理脚本

  1. 参考开发一个简单脚本实例中操作,新建一个数据处理脚本如BulkInsert

    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;
        }
    }

    其中,“CNAME”为命名空间名称,请以实际命名空间为准。

  2. 设置输入参数,运行脚本。

    {
    	"records": [{
    		"name": "20届1班",
    		"number": "201"
    	}]
    }
    图3 脚本BulkInsert的入参测试

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

    {
        "resMessage": "success"
    }

  3. 单击脚本编辑器上方的,启用脚本。

通过模板导入数据

  1. 参考登录环境配置中操作,登录AstroZero环境配置。
  2. 在主菜单中,选择“维护”。
  3. 定义数据导入模板。

    1. 在左侧导航栏中,选择“应用维护 > 数据导入 > 数据导入模板”。
    2. 在数据导入模板页面,单击“新建”。
    3. 配置参数信息,若找不到脚本,请确认脚本是否启用。
      图4 定义模板
      表1 参数说明表

      区域

      参数

      说明

      基本信息

      名称

      数据导入模板的名称。

      脚本

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

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

      描述

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

      Excel映射

      名称

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

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

      表头

      Excel模板中第一行的列名。

      操作

      复制或删除操作。

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

  4. 返回数据导入模板页面,单击该模板所在行的,下载模板到本地,录入数据并保存Excel。

    图5 写入数据

  5. 单击该模板所在行的,拖入上一步录好数据的Excel,单击“导入”,导入修改后的数据。

    图6 导入数据

  6. 在弹出的提示框中,单击“确定”。
  7. 应用维护 > 数据导入 > 数据导入中,等待导入任务的状态为“已完成”后,在对象的数据页签,查看导入结果。

    图7 查看导入结果

分享:

    相关文档

    相关产品