---
title: 通过 CSV 导入对象之间的关系
description: 在 CSV 导入过程中关联记录的完整分步指南。
---

## 概览

本指南将引导您导入对象之间的关系——例如，将人员与公司关联，或将商机与人员关联。

<Note>\*\*可导入内容：\*\*仅限指向单个对象类型的一对多关系。 指向多个对象类型的关系（例如，笔记同时关联到人员和公司）目前尚不支持导入。</Note>

## 了解关系

### 什么是“一对多”关系？

在一对多关系中：

* **一个**公司拥有**多个**人员（员工）
* **一个**公司拥有**多个**商机
* **一个**人拥有**多个**任务

“一”侧为**父级**。 “多”侧为**子级**。

### Twenty 中的常见关系

| 关系      | “一”侧（父级） | “多”侧（子级） |
| ------- | -------- | -------- |
| 公司 → 人员 | 公司       | 人员       |
| 公司 → 商机 | 公司       | 机会       |
| 人员 → 任务 | 人员       | 任务       |
| 人员 → 笔记 | 人员       | 备注       |

## 步骤 1：确定“一”和“多”两侧

在导入之前，确定哪个对象是父级，哪个是子级。

**自问：**“是否一个[对象 A]拥有多个[对象 B]？”

* 一个公司 → 多个人员 ✓（公司为父级）
* 一个人 → 多个公司 ✗（这是错误的——一个人隶属于一个公司）

## 步骤 2：先导入父级记录

在引用之前，父级（“一”侧）必须已存在于 Twenty 中。

**导入顺序：**

1. **公司** 优先（无依赖关系）
2. **人员** 其次（关联到公司）
3. **商机** 第三（关联到公司和/或人员）
4. **任务/笔记**（可关联到以上任一项）

<Warning>
**如果父级记录不存在，导入将失败。**

在导入包含公司引用的人员之前，请务必确认公司已导入。
</Warning>

## 步骤 3：记录父级的唯一标识符

您需要使用**唯一标识符**来引用父级记录。 可用选项：

| 父级对象      | 可用的唯一标识符                          |
| --------- | --------------------------------- |
| **公司**    | `id`（UUID）、`domain`（推荐）或任何自定义唯一字段 |
| **人员**    | `id`（UUID）、`email`，或任何自定义唯一字段     |
| **工作区成员** | `id`（UUID）、`email`（而非姓名）          |
| **自定义对象** | `id`（UUID），或任何标记为唯一的字段            |

<Note>\*\*建议：\*\*公司使用 `domain`，人员使用 `email`。 这些字段可读性强，且在电子表格中易于核对。</Note>

### 查找标识符

如果您需要 `id`：

1. 从 Twenty 导出父级记录
2. 导出结果包含 `id` 列
3. 在子级记录文件中使用这些 ID

## 步骤 4：核实关系字段是否存在

在导入之前，确保对象之间存在关系字段。

**检查或创建的方法：**

1. 进入 **设置 → 数据模型**
2. 选择您的子级对象（例如，人员）
3. 查找指向父级的关系字段（例如，公司）
4. 如果不存在，请创建：
   * 点击 **+ 添加字段**
   * 选择 **关系** 类型
   * 选择父级对象

## 步骤 5：准备您的 CSV 文件

在子级 CSV 中添加一列，使用父级的唯一标识符进行引用。

### 示例：人员关联到公司

**您的人员 CSV：**

```csv
firstName,lastName,email,jobTitle,companyDomain
John,Smith,john@acme.com,CEO,https://acme.com
Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```

`companyDomain` 列引用公司的域名。

### 格式要求

| 标识符  | 格式     | 示例                                     |
| ---- | ------ | -------------------------------------- |
| 域    | URL 格式 | `https://acme.com`                     |
| 电子邮件 | 标准邮箱   | `john@acme.com`                        |
| 编号   | UUID   | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |

<Warning>
**域名格式很重要！**

请使用 `https://domain.com`（而不是仅 `domain.com`）。 这与 Twenty 存储公司域名的方式一致，并可避免匹配错误。
</Warning>

### 重要规则

1. **需要精确匹配** — 值必须与父级记录完全一致
2. **仅映射一个唯一标识符** — 不要同时包含 `companyId` 和 `companyDomain`
3. **区分大小写** — `Acme.com` ≠ `acme.com`

## 步骤 6：上传并映射关系

1. 前往子级对象（例如，人员）
2. 点击 **⋮** → **导入记录**
3. 上传您的 CSV 文件
4. 在字段映射步骤中：
   * 找到您的关系列（例如，`companyDomain`）
   * 将其映射到 **Company** 关系字段
5. 完成其余映射
6. 检查错误并确认

Twenty 将自动把每条子级记录关联到匹配的父级。

## 步骤 7：验证导入结果

导入后：

1. 打开几条子级记录（例如，人员）
2. 确认关系字段显示正确的父级（例如，公司）
3. 打开一条父级记录并检查相关记录部分

## 常见错误及避免方法

| 错误         | 问题                                     | 解决方案                       |
| ---------- | -------------------------------------- | -------------------------- |
| **导入顺序错误** | 在公司之前导入人员                              | 始终先导入父级，再导入子级              |
| **域名格式错误** | 使用 `acme.com` 而非 `https://acme.com`    | 使用带有 `https://` 的完整 URL 格式 |
| **多个唯一字段** | 同时映射 `companyId` 和 `companyDomain`     | 仅映射一个唯一标识符                 |
| **缺少关系字段** | 数据模型中不存在该关系字段                          | 请在导入前于 **设置 → 数据模型** 中创建   |
| **记录不存在**  | 父级记录在 Twenty 中不存在                      | 先导入父级记录，或检查是否有拼写错误         |
| **大小写不匹配** | 文件中为 `Acme.com`，但 Twenty 中为 `acme.com` | 确保大小写完全一致                  |

## 关联到工作区成员

当关联到工作区成员（您的团队）时：

* 使用他们的**电子邮箱地址**，而不是姓名
* 例如：`owner@yourcompany.com`，而不是 "John Smith"

```csv
taskName,assignedTo
Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```

## 常见问题

<AccordionGroup>
  <Accordion title="如果我的父级记录没有域名或邮箱怎么办？">
    您有两个选项：
    1. 使用 Twenty 的 `id`（导出父级记录以获取其 ID）
    2. 在数据模型中创建自定义唯一字段，用于存储来自旧系统的外部 ID
  </Accordion>

  <Accordion title="我可以更新现有记录上的关系吗？">
    是! 包含子级记录的唯一标识符（例如，人员的 `email`）以及新的关系值。 导入将更新该关系。
  </Accordion>

  <Accordion title="我可以导入多对多关系吗？">
    目前尚不支持导入多对多关系。 计划于 2026 年上半年推出。
  </Accordion>

  <Accordion title="我可以关联到多个对象类型吗（例如，笔记同时关联到人员和公司）？">
    指向多个对象类型的关系目前尚不支持导入/导出。 此功能已在我们的路线图中。
  </Accordion>

  <Accordion title="如果父级记录不存在会怎样？">
    导入会为该行显示错误。 您可以：
    * 先导入父级记录，然后重新导入
    * 修正引用值
    * 从导入中移除该行
  </Accordion>

  <Accordion title="为什么我的关系没有正确关联？">
    常见原因：
    * 格式错误（域名请使用 `https://domain.com`）
    * 大小写不匹配（检查拼写是否完全一致）
    * 父级不存在（请先导入父级）
    * 映射了多个标识符（仅使用一个）
  </Accordion>
</AccordionGroup>

<Warning>
**请注意：软删除的记录也会计入唯一性。**

如果您收到“not found”错误，但记录似乎存在，请检查命令菜单 → 查看已删除的记录。 父级可能已被软删除。
</Warning>

## 故障排除

遇到问题？ 请查看：

* [如何修复导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
* [导入关系功能](/l/zh/user-guide/data-migration/capabilities/import-relations)
* [唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
