---
order: 27
navTitle: 导入数据
---
# SuperPage交互-导入数据

**导入数据**交互用于将excel或csv文件中的数据提交至数据库中，常与[按钮](../../components/common/button.md)搭配使用。如点击按钮，使用导入数据的方式将企业信息填报至数据库中：

![导入数据](./images/2021_03_31_10_17_03_287.gif)

示例地址：[列表-增删改查](https://demo.succbi.com/v5/demo-spg/%E5%88%97%E8%A1%A8)

## 使用导入数据{#use}

### 数据来源{#origin}

1. **excel、csv文件**：这类文件的数据从外部获取，并通过[文件上传](#upload_method)将数据导入
2. **其他模型表**：从数据库的其他模型表中获取数据并作为补充与excel一同导入，可参考[关联模型表数据导入](#other_table)

### 使用场景{#usage}

1. **直接导入**：通过**导入数据**交互，直接将数据存入目标模型表中
2. **筛选后导入**：将通过交互导入的数据存入至**临时表**中，通过[复制数据](./copy-data.md)对筛选后的数据保存至最终所需的目标表中

### 导入文件的要求{#demand}

1. **字段名称相同**：若勾选“导入所有同名字段”，则excel第一行统一为字段名称，该字段名称需要与模型表内字段名称完全一致；若不勾选，则无此要求，但必须在[更多字段设置](#other_field)中加入映射关系
2. **必须包含主键字段**：上传的excel文件中，必须包含目标模型表的[主键](../../../../data-gov/model/model-settings.md#primary-key)字段

## 示例步骤{#step}

为避免上传excel时数据格式不统一，可以使用[打开链接](./linkto.md#download)交互提供excel模板，下面以企业信息的导入填报为例，具体操作步骤如下：

![示例](./images/2020_11_23_18_05_22.gif)

### 提供下载模板{#model}

1. **制作excel模板**：用excel制作一个表格，在第一行的每一列中输入字段名称
2. **将excel导入门户中**：打开SuperPage资源树，右键导入已经制作好的excel
3. **添加下载excel模板的按钮**：新增**下载模板**的按钮，在**交互**中添加[打开链接](./linkto.md)交互，并链接到excel的存放路径

### 设置导入属性{#set\_property}

1. **按钮组件添加交互**：选中**按钮**组件，在**交互**中添加**导入数据**
2. **设置交互属性**：在**交互**>**导入数据**>**文件**中选择上传文件，在**目标数据集**选择对应的模型表，选择[覆盖模式](#write_method)，勾选**导入所有同名字段**
3. **更多字段设置**：在[更多字段设置](#other_field)中的**目标字段**中选择excel模板内没有提供的字段，并手动输入表达式给该字段赋值

:::tip

**目标数据集**属性用于设置将数据导入至的数据模型，该模型需提前在SuperPage中进行引用，并设置该模型为**可写**或**可读可写**。

:::

## 数据文件上传方式{#upload\_method}

**导入数据**交互提供了两种上传方式，在**文件**属性中进行设置，有以下两个选项：

1. **上传文件**：表示直接弹出一个选择文件的对话框，选择文件上传并导入
2. **附件控件**：表示从附件控件中取文件信息，需要在**附件控件**属性中选择对应的[上传附件](../../components/input/upload.md)组件

若需获取上传的文件ID，可以勾选**将文件ID设置给指定参数**属性，将上传的文件ID赋值给提前设置好的**全局参数**。如对导入的文件进行筛选，使用文件ID进行区分，则可通过勾选该属性获取文件ID。

## 数据的导入方式{#data}

### 数据写入方式{#write\_method}

数据导入至数据库中时，需要为其设置导入方式，如**追加**、**覆盖**、**合并**等，在**覆盖模式**属性中进行设置：

- **覆盖全部**：清空表内原有的所有数据，并将导入的数据填入
- **追加**：在表内原有的数据上进行追加，不覆盖原有数据，若存在主键相同的数据，不进行任何操作
- **合并**：根据**主键**进行判断，若**主键**相同，则进行覆盖导入，若**主键**不同，则进行追加导入

勾选**导入所有同名字段**，系统自动将excel或csv文件中的字段名称与模型表的字段名称进行匹配并导入；若不进行勾选，则需要在[更多字段](#other_field)中设置目标模型表的字段与文件字段的对应关系，否则无法正确导入。

### 关联模型表数据导入{#other\_table}

在导入excel数据的基础上，还可以从其他模型表中获取数据并补全至指定的字段中。如上传企业信息excel时，法定代表人不需要填写，而是从其他表中获取到该企业的法定代表人并存入至目标数据模型中，**关联数据导入**属性就提供了从其他表取数的入口。勾选后需要对如下属性进行设置：

![关联模型表数据导入](./images/2021-03-31-16-23-03.png)

1. **关联数据集**：选择需要从中取数的模型表
2. **关联数据字段**：**关联数据集**中需要与excel进行关联的字段，如模型表字段【企业名称】
3. **关联文件字段**：与**关联数据集**需要进行关联的字段，如excel中的【企业名称】

**关联数据集**的数据将作为补充数据与excel的数据一同导入至目标模型表，必须在[字段设置](#other_field)中设置**关联数据集**字段与目标数据集的映射关系，若设置的字段在excel中已经存在，则以**关联数据集**中的数据为准。

### 更多字段设置{#other\_field}

需要由系统自动生成的字段值，可以在**更多字段**属性下进行设置，如创建时间不需要在excel中填写，可通过`now()`表达式将当前时间赋值给创建时间字段。勾选**更多字段**，并在**更多字段**>**字段设置**对话框中编辑。

![更多字段设置](./images/2021-03-31-16-21-01.png)

1. **目标字段**：目标数据集的字段
2. **类型与值**
   - 表达式：通过表达式取到数据，“值”为表达式
   - 文件ID：将上传的文件ID赋给目标字段
   - 关联表字段：使用**关联数据导入**后必须设置的类型，“值”为**关联数据集**对应的**目标数据集**字段
   - 文件字段：对应上传excel中的字段，“值”为excel的字段名称。
     - excel列名：每列数据的列头一般是本列数据的标题，例如“资产名称”
     - 行号：需要获取每行数据的行号时，可手动输入“行号”
