
# 导入导出应用中对象的数据
将当前系统中的对象数据导出，然后在其他环境或账号进行导入，实现数据迁移和备份，如迁移旧的数据到新的环境，保持对象的一致和兼容。从而实现在不同的账号间或环境间的数据迁移，避免重复开发和不兼容的开发。
 #### 导出对象数据
1. 在华为云Astro轻应用服务控制台，单击"进入首页"，进入应用开发页面。
2. 在页面左上方单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001917373754.png)，选择"环境管理 \> 环境配置"，进入环境配置。
3. 在顶部主菜单中，选择"维护"。

4. 在左侧导航栏中，选择"应用维护 \> 数据导出" 。
5. 在数据导出页签，单击"新建"，根据需求进行配置。 
   图1配置数据导出   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936098457.png "点击放大")
   表1导出参数说明 
   | 参数      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 任务名称    | 设置数据批量导出任务的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 导出方式    | 选择数据的导出方式，分为"普通"和"模板"两种类型，默认为"普通"。 如果导出相同的对象，避免每次导出时重复选择相同的对象，建议选择模板导出方式。即在"模板区域"新建模板，在后续导出相同对象时，选择对应的模板即可导出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 导出文件编码  | 导出文件的编码格式，支持"UTF-8"和"GBK"两种。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 前置脚本    | 配置前置脚本，导出的zip包在进行数据导入时，会先执行前置脚本，可以用于导入前清理某些数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 后置脚本    | 配置后置脚本，导出的zip包在进行数据导入时，导入结束后会执行后置脚本，可以用于导入完成后执行某些数据操作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 模式      | 设置导出任务的执行次数。 - 仅执行一次：定时/即时导出，立即导出或者选择某个特定时间导出数据（只执行一次）。  - 按设置的频率执行多次：按计划导出，从选定的时间开始，按用户设置的时间间隔，周期性导出。  - 按照Cron表达式：按照设置的Cron表达式导出数据。Cron表达式是一种用于指定定时任务的时间表达式，常用来指定任务的执行时间、执行频率和执行间隔。Cron表达式由秒、分、时、日期、月份和星期六个域组成，每个域的取值请参见[表2](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2060.html#astrozero_06_2060__table32858195316)。   |
   | 立即导出    | "模式"选择"仅执行一次"时，您需要配置是否立即导出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 首次导出时间  | "模式"选择"仅执行一次"且非立即导出或者"按设置的频率执行多次"时，需要配置首次导出时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 间隔      | "模式"选择"按设置的频率执行多次"时，需要设置导出的时间间隔。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 单位      | "模式"选择"按设置的频率执行多次"时，需要设置导出的时间间隔单位。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Cron表达式 | "模式"选择"按照Cron表达式"时，需要设置Cron表达式。 Cron表达式示例如下： ``` 描述                           表达式 每天6点执行                     0 0 6 * * ? 每天的0点、6点、12点都执行一次   0 0 0,6,12 * * ? 每周六凌晨2点执行                0 0 2 ? * SAT 周一至周五的上午10:20触发        0 20 10 ? * MON-FRI ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      
   表2Cron表达式域取值 
   | 字段 | 允许的数值 | 允许的特殊字符          |
   |:---|:---|:---|
   | 秒  | 0\~59 | 不支持              |
   | 分  | 0\~59 | \* /             |
   | 小时 | 0\~23 | - \* /           |
   | 日期 | 1\~31 | - \* ? /         |
   | 月份 | 1\~12 | JAN-DEC - \* /   |
   | 星期 | 1\~7  | SUN-SAT - \* ? / |
      
   表3Cron表达式特殊字符的含义 
   | 字符 | 说明                                   | 示例                                                                                                                                                                                         |
   |:---|:---|:---|
   | ,  | 表示分开的值。                              | 1,3,4,7,8。                                                                                                                                                                                 |
   | \* | 表示匹配域的任意值。                           | 在分这个域使用\*，即表示每分钟都会触发事件。                                                                                                                                                                    |
   | ?  | 表示匹配域的任意值，但只能用在日期和星期两个域，因为这两个域会相互影响。 | 要在每月的20号触发调度，不管每个月的20号是星期几，则只能使用如下写法：13 13 15 20 \* ?。 其中，因为日期域已经指定了20号，最后一位星期域只能用?，不能使用\*。如果最后一位使用\*，则表示不管星期几都会触发，与日期域的20号相斥，此时表达式不正确。 |
   | -  | 表示起止范围。                              | 在小时这个域使用8-10，表示从8时到10时每小时触发一次。                                                                                                                                                             |
   | /  | 表示起始时间开始触发，然后每隔固定时间触发一次。             | 在小时这个域中使用，"\*/3"等同于"每3个小时"，即"0,3,6,9,12,15,18,21"小时触发。                                                                                                                                     |
      
   
   

6. 设置导出条件和导出的数据内容，单击"导出"。 
   - 当上一步数据"导出方式"选择"普通"时，选择类目进行导出。
     - 包含全部对象：包含所有的对象。
     
     - 包含标准对象：包含系统预置的标准对象。
     
     - 包含自定义对象：包含用户定制的自定义对象。
     
     - 包含系统对象：进行数据导出才会显示，元数据导出时不会显示该项。表示平台各项系统功能模块所使用到的对象，如服务编排、脚本。
       表4常见的系统对象说明 
       | 对象名                  | 说明              |
       |:---|:---|
       | Package              | 存放软件包的基本信息。     |
       | PackageContent       | 存放软件包的组件信息。     |
       | PackageInstall       | 包安装相关。          |
       | PackageVersion       | 存放包版本信息。        |
       | Profile              | 权限表。            |
       | ServicePermission    | 业务权限凭证表。        |
       | PermissionSet        | 扩展权限集相关信息。      |
       | Connector            | 存放连接器信息。        |
       | Tab、Menu             | 应用菜单相关表。        |
       | SysParameter         | 系统参数表。          |
       | CustomError          | 存放自定义错误码相关信息。   |
       | CustomResource       | 多语言的主表。         |
       | CustomResourceValue  | 多语言的子表。         |
       | CustomTranslation    | 翻译表。            |
       | Application          | 应用表。            |
       | Service              | BO表。            |
       | ApplicationComponent | 应用中的组件表。        |
       | ServiceItem          | BO中的组件表。        |
       | URLMap               | 存放Custom API信息。 |
          
       
     
     - 包括权限对象：进行数据导出才会显示，元数据导出时不会显示该项。表示平台与权限相关的对象，如权限、扩展权限集、业务权限凭证等。
     
     - 自定义：可自定义导出具体的"目标对象"，可多选。
      
   
   - 当上一步"数据导出"方式选择"模板"时，可新建或选择模板进行导出，目标对象可多选。 当对象勾选的是多个时，导出条件过滤字段为公共字段。导出任务状态为"已完成"时，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894138900.png)，可下载文件。
     ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
     - 请务必在48小时之内完成下载，逾期数据文件将会失效。
     
     - 数据导出任务执行结果或报错，可在"全局元素 \> 定时任务 \> 任务执行历史"中查看。
       
   
   
   
   
 
 #### 导入对象数据
请先将[导出对象数据]中导出的数据压缩成"zip"格式的压缩包。在进行数据导入前，要确保环境中已存在与导入文件同名的表结构，可通过元数据导入或在环境中手动定义表结构。
1. 在华为云Astro轻应用服务控制台，单击"进入首页"，进入应用开发页面。
2. 在页面左上方单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001917373754.png)，选择"环境管理 \> 环境配置"，进入环境配置。
3. 在顶部主菜单中，选择"维护"。
4. 在左侧导航栏中，选择"应用维护 \> 数据导入 \> 数据导入"。

5. 在数据导入页面，单击"新建"，配置"导入类型"，拖入待导入zip文件，单击"导入"。 
   导入对象数据时，还需要设置导入记录ID是否为空。
   - 导入记录ID值为空：导入的数据记录ID值为空，系统将自动生成随机ID。
   
   - 导入记录ID值不为空：根据导入记录中的ID匹配，若存在则更新数据，不存在则创建新的记录。
    
   
   
6. 在弹出的提示框中，单击"确定"。 
   等待一分钟后，单击操作列的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904456136.png)，数据导入页面中会更新导入状态。如果数据导入失败，可以从邮件内容或导入页面"详情"中获知失败原因。
   ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
   数据导入任务执行结果或报错，可在"全局元素 \> 定时任务 \> 任务执行历史"中查看。
   
   
 
#### 通过模板导入对象数据
在华为云Astro轻应用上定义数据导入模板，将模板下载到本地，并录入数据。数据录入完成后，通过导入模板导入新数据并按照预定义的脚本处理数据。执行导入操作前，请确保导入数据的数据表已存于华为云Astro轻应用中。
1. 创建一个数据处理脚本BulkInsert并启用。
   
   1. 参考[创建空白华为云Astro轻应用脚本](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9162.html)中操作，创建一个空白脚本BulkInsert。
   
   2. 在脚本编辑器中，输入如下示例代码。
      BulkInsert脚本代码示例如下，入参是name和number，该脚本的主要功能是准备好了导入模板的输入字段，用以进行后面步骤的模板导入数据。
      ```
      import * as context from 'context';
      import * as db from 'db';
      import * as sys from 'sys';
       
      @useObject(['命名空间__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(['命名空间__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',
                          命名空间__number__CST: input.records[i].number
                      }
                      recsInsert.push(recOne)
                  }
                  console.log('recsInsert = ', recsInsert)
                  if (recsInsert.length < 1) {
                      return
                  }
                  let objMulti = db.object('命名空间__Class__CST');
                  let ret = objMulti.batchInsert(recsInsert);
       
                  out.resMessage = "success"
              }
              catch (error) {
                  context.setError(error.name, error.message)
              }
              return out;
          }
      }
      ```
      
   
   3. 设置输入参数，运行脚本。
      ```
      {
      "records": [{
      "name": "20届1班",
      "number": "201"
      }]
      }
      ```
      输出参数如下所示，表示运行脚本符合预期。
      ```
      {
          "resMessage": "success"
      }
      ```
      
   
   4. 单击脚本编辑器上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904330920.png)，启用脚本。
   
   
   
   
2. 在华为云Astro轻应用服务控制台，单击"进入首页"，进入应用开发页面。
3. 在页面左上方单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001917373754.png)，选择"环境管理 \> 环境配置"，进入环境配置。
4. 在顶部主菜单中，选择"维护"。
5. 定义数据导入模板。 
   1. 在左侧导航栏中，选择"应用维护 \> 数据导入 \> 数据导入模板"。
   
   2. 在数据导入模板页面，单击"新建"。
   
   3. 配置参数信息，若找不到脚本，请确认脚本是否启用。
      图2定义模板   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001941151965.png "点击放大")
      表5参数说明表 
      | 区域      | 参数 | 说明                                                                                                                                                                                                                                                                                                                                          |
      |:---|:---|:---|
      | 基本信息    | 名称 | 数据导入模板的名称。命名要求如下： - 长度范围为1\~64个字符。  - 必须以英文字母开头，只能由英文字母、数字或单下划线组成，且不能以下划线结尾。   |
      | 基本信息    | 脚本 | 选择[1]中，提前定义好的数据处理脚本。                                                                                                                                                                                                                                                                                  |
      | 基本信息    | 描述 | 根据实际需求，输入数据导入模板的描述信息。                                                                                                                                                                                                                                                                                                                       |
      | Excel映射 | 名称 | 定义输出到脚本的入参变量名，请和脚本中入参变量名保持一致。                                                                                                                                                                                                                                                                                                               |
      | Excel映射 | 列  | Excel模板中具体的列，按照顺序定义，例如A、B、C。                                                                                                                                                                                                                                                                                                                |
      | Excel映射 | 表头 | Excel模板中第一行的列名。                                                                                                                                                                                                                                                                                                                             |
      | Excel映射 | 操作 | 复制或删除操作。                                                                                                                                                                                                                                                                                                                                    |
         
      
   
   4. 设置完成后，单击"保存"。
   
   
   
   
6. 返回数据导入模板页面，单击该模板所在行的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904312668.png)，下载模板到本地，录入数据并保存Excel。
   
   图3写入数据   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904472936.png)
   
   
7. 单击该模板所在行的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001941152353.png)，拖入上一步录好数据的Excel，单击"导入"，导入修改后的数据。
   
   图4导入数据   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904313048.png "点击放大")
   
   
8. 在弹出的提示框中，单击"确定"。
9. 在"应用维护 \> 数据导入 \> 数据导入"中，等待导入任务的状态为"已完成"后，在对象的数据页签，查看导入结果。 
   图5查看导入结果   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904472960.png "点击放大")
   
   
 
#### 快速批量创建对象数据
1. 在华为云Astro轻应用服务控制台，单击"进入首页"，进入应用开发页面。
2. 在页面左上方单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001917373754.png)，选择"环境管理 \> 环境配置"，进入环境配置。
3. 在顶部主菜单中，选择"维护"。
4. 在左侧导航栏中，选择"应用维护\> 数据导入 \> 数据导入"。

5. 在数据导入页面，单击"新建"。
6. "导入类型"选择"导入记录ID值为空"，单击"下载模板"，如[图6]。
   
   图6下载对象数据模板   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904460128.png "点击放大")
   
   
7. 在下载模板页面，选择"类目"，单击"下载"，将模板下载到本地。
8. 解压zip包，使用Excel批量编辑好数据，如[图7]。
   
   图7Excel创建数据   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001904300216.png "点击放大")
   
   
9. 将编辑好的数据重新打包成zip包，重新导入数据，具体步骤请参见[导入对象数据]。
 
