---
order: 28
navTitle: 复制数据
---
# SuperPage交互-复制数据

**复制数据**交互主要应用于多行数据的批量插入。如下动图，为检查任务添加待查企业，将指定的企业信息复制到待查任务表：

![添加对象](./images/2021_04_16_16_14_32.gif)

示例地址：[复制数据](https://demo.succbi.com/v5/demo-spg/%E5%A4%8D%E5%88%B6%E6%95%B0%E6%8D%AE)

## 使用复制数据{#use}

**复制数据**交互通常是将设置了[映射关系](#mapping)的字段中的内容按照指定的[数据范围](#copyrange)以及[覆盖模式](#coveragemode)从**源数据集**复制到**目标数据集**中。以新增检查对象为例，具体使用方法如下：

![使用复制数据](./images/2021_04_16_16_22_32.gif)

1. **按钮组件添加交互**：选中**按钮**组件，在**交互**中添加**复制数据**
2. **设置对象数据集**：在**源数据集**和**目标数据集**属性设置中分别指定`企业基本信息表`和`企业对象表`为复制的源表以及目标表
3. **设置数据范围和覆盖模式**：将[数据范围](#copyrange)设置为**当前查询结果**，[覆盖模式](#coveragemode)设置为**追加**，意为将当前查询出来的企业作为本次检查的对象且不会重复添加相同企业
4. **设置字段映射关系**：勾选[导入所有同名字段](#same-field)并设置[更多字段](#more-field)，在[更多字段](#more-field)可自定义**目标字段**的数据来源

## 数据的复制范围{#copyrange}

在交互设置**数据范围**中可设置数据的复制范围，决定了源数据集中哪些数据会被复制到目标数据集，设置选项可参考[删除数据](./delete-data.md#deleterange)文档中的详细说明。

## 数据的写入方式{#coveragemode}

**覆盖模式**决定了数据从**源数据集**复制到**目标数据集**时，以主键为依据做何种操作：

- 覆盖全部：会先清空**目标数据集**中的数据，再将**源数据集**中的复制数据插入到**目标数据集**中
- 追加：以主键为依据往**目标数据集**中插入数据，会略过与**目标数据集**中主键重复的数据
- 合并：对于主键重复的数据为合并操作，其余数据正常插入

## 字段映射关系设置{#mapping}

### 导入所有同名字段{#same-field}

勾选**导入所有同名字段**属性设置后，**源数据集**与**目标数据集**中的字段按照以下顺序进行匹配：

1. [物理字段](../../../../data-gov/model/README.md#model-field)名相同的优先匹配
2. [物理字段](../../../../data-gov/model/README.md#model-field)名不同但[名称](../../../../data-gov/model/README.md#model-field)相同的其次匹配

复制时仅能将有映射关系的字段内容从**源数据集**写入到**目标数据集**中。

### 更多字段{#more-field}

**更多字段**设置应用于某些字段无法与**源数据集**自动形成映射关系时，优先级高于**导入所有同名字段**设置。可通过两种方式来设置**目标字段**中的内容：

- 表达式：可输入计算公式作为**目标字段**的值存入**目标数据集**中，如可通过表达式`$user.user_id`获取当前用户代码设置到对应的字段
- 源表字段：可从**源数据集**中选择字段与**目标数据集**中的**目标字段**形成映射关系，此时不需要物理字段名或字段名称保持一致

:::tip

**复制数据**通常用于在目标表中插入多行数据，因此**目标数据集**中的主键应当注意有设置正确的映射关系

:::

## 数据暂存{#tmpstorage}

**暂存**可以将数据保存在浏览器页面的对象数据集中。**暂存**后，页面中展示的数据将显示为复制后的内容，需要再次使用[提交表单](./submit-data.md)交互将复制后的数据提交至数据库中。可参考[提交表单](./submit-data.md)中**暂存**的使用方法。

## 设置提示信息{#tooltips}

**复制数据**交互完成前后可自定义提示信息，包括校验提示以及交互完成前后的提示信息，具体设置可参考[提交表单](./submit-data.md)。

## 应用场景{#apply}

### 确认Excel导入数据{#apply-Excel}

在使用Excel[导入数据](./import-data.md)时,通常不希望导入的数据直接入库，这时候可以先将数据导入到一张临时表中，等到数据确认后再将临时表中的数据复制到目标表中：

![导入确认](./images/2021_04_16_13_58_32.gif)

示例地址：[列表增删改查](https://demo.succbi.com/v5/demo-spg/%E5%88%97%E8%A1%A8%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5)

1. 需要额外准备一张临时表，通常与正式表一致即可。使用[导入数据](./import-data.md)将数据先插入到一张临时表，并通过[列表](../../components/data/list.md)来展示临时表数据
2. 确认临时表中的数据，通过[删除数据](./delete-data.md)将一些不合适的数据排除
3. 使用**复制数据**，将临时表中的数据追加覆盖到正式表
4. 通过[删除数据](./delete-data.md)清空临时表中数据
