---
order: 1
---
# 如何导入第三方系统的用户表和部门表

很多时候需要将第三方系统的用户、部门等信息同步到SuccBI系统中，SuccBI支持实时连接和导入两种方式进行同步。本文主要介绍SuccBI部署完成后，如何通过**数据加工**的方式将第三方用户和部门信息导入到系统中。

## 实现思路{#ideas}

1. 导入之前，需要先连接第三方用户和部门表，系统支持[上传数据文件](../../data-connect/README.md#connect-database)和添加[第三方数据源](../../data-connect/README.md#connect-database)两种方式连接第三方用户和部门表。
2. 连接第三方用户和部门表后，可以使用数据加工将[第三方系统](#tri-synchronize)、[SuccezBI3.14](#ci-synchronize)以及[SuccBI](#bi-synchronize)中的用户和部门信息导入到系统中，提取后即可将数据进行同步。
3. SuccBI也支持对第三方用户密码的导入或重置，只需将明文密码按照指定规则加密再导入到用户表的`password`字段，具体可参考[如何加密用户密码](#encrypt-user)。
4. 若需要将第三方用户和部门数据定时更新到SuccBI中，也可以通过[计划调度](../../schedule/README.md)对数据加工进行定时提取，实现用户和部门数据的同步。

:::tip 提示
导入第三方系统的用户表和部门表前，需要先对SuccBI中的[szsys\_4\_users](../../dev/sys-tables/README.md#users)和[szsys\_4\_depts](../../dev/sys-tables/README.md#depts)表进行备份。
:::

## 连接第三方用户表和部门表{#import-tables}

连接第三方用户表和部门表有两种方式：

1. 进入**项目**>**数据**>**数据源**>**文件数据源**，点击[上传数据文件](../../data-connect/README.md#upload-data-file)，将用户和部门文件上传到SuccBI中进行连接。
2. 进入**项目**>**数据**>**新建**>**数据源连接**，添加[第三方数据源](../../data-connect/README.md#connect-database)，然后连接数据库中的用户表和部门表进行数据加工。

## 与SuccBI用户表和部门表进行字段映射{#field-mapping}

第三方系统和SuccezBI3.14通过数据加工导入用户表和部门表时，需要与SuccBI系统用户表和部门表进行字段映射，SuccBI也支持在提取时选择目标表字段进行映射。用户表和部门表的常用映射字段如下所示：

- [用户表常用字段](#user-common)
- [部门表常用字段](#department-common)

### 添加字段映射{#add-mapping}

![添加字段映射](./images/2022-09-15-14-02.gif)

数据加工添加字段映射具体步骤如下：

1. 新建数据加工，添加`模型输出`节点，在**数据加工**>**模型输出**>**模型属性**的`提取表`属性中选择目标数据库表。
2. 将`模型输出`节点切换为**字段列表**栏，在`物理字段名`中选择目标数据库表的字段与原表字段进行映射。
3. 点击**保存**按钮保存数据加工，并点击**提取数据**执行提取。

### 用户表常用字段{#user-common}

下面是用户表常用字段，用户表详细信息可参考[这里](../../dev/sys-tables/README.md#users)。
|字段名|	主键|	字段类型|	字段描述|	说明|
|:------|	:------|	:------|	:------|	:------|
|USER\_ID|	是|	VARCHAR(32)|	ID|	外部用户表主键，创建用户时默认与用户名相同|
|USER\_NUMBER|	|	VARCHAR(32)|	用户名|	用于登录，具有唯一性约束|
|USER\_NAME|	|	VARCHAR(128)|	姓名|	|
|NICKNAME|	|	VARCHAR(128)|	昵称|	|
|DEPT\_ID|	|	VARCHAR(64)|	所属部门|	|
|ORDER\_ID|	|	VARCHAR(64)|	排序ID|	|
|PASSWORD|	|	VARCHAR(128)|	密码密文|	加盐加密，默认使用`sha1`算法加密|
|SALT|	|	VARCHAR(16)|	盐|	|
|PHONE|	|	VARCHAR(16)|	移动电话|	可用于登录|
|EMAIL|	|	VARCHAR(128)|	邮件地址|	可用于登录|
|ENABLED|	|	NUMBER(1)|	是否启用|	1启用，0禁用|

### 部门表常用字段{#department-common}

下面部门表常用字段，部门表详细信息可参考[这里](../../dev/sys-tables/README.md#depts)。
|字段名|	主键|	字段类型|	字段描述|	说明|
|:------|	:------|	:------|	:------|	:------|
|DEPT\_ID|是 | VARCHAR(64) | ID | 部门表主键，创建部门时默认与部门编号相同，创建后不可再修改 |
| DEPT\_NUMBER | | VARCHAR(64) | 部门编号 | 部门的业务主键，具有唯一性约束 |
| DEPT\_NAME | | VARCHAR(256) | 部门名称 | |
| PARENT\_ID | | VARCHAR(64) | 父部门ID | |

## 如何加密用户密码{#encrypt-user}

第三方系统和SuccezBI3.14导入用户密码到`PASSWORD`字段中时，需要对密码进行加密，SuccBI在[用户表](../../dev/sys-tables/README.md#users)中设置了`salt`字段专门用于密码加密，用户可在[导入用户表](#tri-users)时使用列加工进行加密拼接，加密拼接方式为`sha1(明文密码字段+[盐])`，默认加密算法为[sha1](../../exp/func/string/SHA1.md)。

![encrypt-user](./images/2022-09-30-15-13.png)

:::tip 提示
若无法获取用户明文密码，也可对密码进行重置，加密拼接方式为`sha1(重置后的密码+[盐])`。
:::

## 导入另一个SuccBI系统的用户和部门表{#bi-synchronize}

导入另一个SuccBI系统的用户和部门表较为简单，只需新建数据加工，并将源系统的数据提取到目标系统的用户表和部门表。

### 同步用户表{#bi-users}

![同步SuccBI用户表](./images/2022-09-07-14-37.gif)

同步其他SuccBI系统的用户表步骤如下：

1. 进入**数据**模块，点击**新建**>**数据加工**新建数据模型。
2. 将源系统的用户表拖入数据模型中，并添加添加`模型输出`组件。
3. 将`模型输出`组件切换到**模型属性**列表，主键选择`USER_ID`，目标数据库表选择`szsys_4_users`，提取方式选择`按主键追加`，并勾选`更新已有数据`。修改完毕后保存模型并提取数据。
4. 最后点击**保存**按钮保存数据加工，并点击**提取数据**执行提取。

### 同步部门表{#bi-depts}

![同步SuccBI部门表](./images/2022-09-07-16-06.gif)

部门表的同步与用户表基本相同，具体步骤如下：

1. 进入**数据**模块，点击**新建**>**数据加工**新建数据模型。
2. 将源系统的用户表拖入数据模型中，并添加添加`模型输出`组件。
3. 将`模型输出`组件切换到**模型属性**列表，主键选择`DEPT_ID`，提取表选择`szsys_4_depts`，提取方式选择`按主键追加`，并勾选`更新已有数据`。修改完毕后保存模型并提取数据。
4. 最后点击**保存**按钮保存数据加工，并点击**提取数据**执行提取。

## 导入第三方系统的的用户表和部门表{#tri-synchronize}

### 导入第三方系统的用户表{#tri-users}

![导入第三方系统的用户表](./images/2022-09-08-16-26.gif)

导入第三方系统的用户表步骤如下：

1. 进入**数据**模块，点击**新建**>**数据加工**新建数据模型，将第三方系统的用户表拖入数据模型中进行数据加工。
2. 在数据加工中添加`列加工`组件，新增`用户名`字段，字段与用户代码相同，并根据[加密用户密码](#encrypt-user)生成`密文密码`，然后点击`选择字段`按钮，并对需要同步的用户数据进行筛选。
3. 添加`模型输出`组件，切换到**模型属性**配置提取信息，主键选择`USER_ID`，目标数据库表选择`szsys_4_users`，提取方式选择`按主键追加`，并勾选`更新已有数据`。
4. 在`模型输出`组件中切换到**字段列表**，并在`物理字段名`中根据[用户表常用字段](#user-common)设置[字段映射](#add-mapping)。
5. 最后点击**保存**按钮保存数据加工，并点击**提取数据**执行提取。

### 导入第三方系统的部门表{#tri-depts}

![导入第三方系统的部门表](./images/2022-09-08-14-09.gif)

导入第三方系统的部门表步骤如下：

1. 进入**数据**模块，点击**新建**>**数据加工**新建数据模型，将第三方系统的部门表表拖入数据模型中进行数据加工。
2. 添加`列加工`组件，并新增`部门编号`字段，字段一般与部门ID相同，然后点击`选择字段`按钮，筛选需要同步的字段信息。
3. 添加`模型输出`组件，切换到**树形结构**属性栏新建父子层次，父字段选择`上级机构`，子字段选择`部门编号`，点击`自动创建层次字段`后，系统会自动生成部门层次信息。
4. 将`模型输出`组件切换到**模型属性**列表，主键选择`DEPT_ID`，提取表选择`szsys_4_depts`，提取方式选择`按主键追加`，并勾选`更新已有数据`。
5. 在`模型输出`组件中切换到**字段列表**，将`物理字段名`根据[部门表常用字段](#department-common)进行与第三方部门表字段进行[字段映射](#add-mapping)。
6. 最后点击**保存**按钮保存数据加工，并点击**提取数据**执行提取。

## 导入老版本(3.1.4)的用户和部门表{#ci-synchronize}

导入SuccezBI3.1.4的用户表和部门表与导入第三方用户和部门表步骤基本相同，具体可参考[导入第三方系统的的用户表和部门表](#ci-system)。

## 定时同步用户表和部门表

使用数据库表进行数据加工导入第三方用户表和部门表时，若需要定时更新用户和部门信息，可以设置计划任务实现用户和部门信息的定时同步。具体可参考[调度管理](../../schedule/README.md)。
