---
title: 通过 CSV 导入对象之间的关系
description: 在 CSV 导入过程中关联记录的完整分步指南。
---
## 概览
本指南将引导您导入对象之间的关系——例如,将人员与公司关联,或将商机与人员关联。
\*\*可导入内容:\*\*仅限指向单个对象类型的一对多关系。 指向多个对象类型的关系(例如,笔记同时关联到人员和公司)目前尚不支持导入。
## 了解关系
### 什么是“一对多”关系?
在一对多关系中:
* **一个**公司拥有**多个**人员(员工)
* **一个**公司拥有**多个**商机
* **一个**人拥有**多个**任务
“一”侧为**父级**。 “多”侧为**子级**。
### Twenty 中的常见关系
| 关系 | “一”侧(父级) | “多”侧(子级) |
| ------- | -------- | -------- |
| 公司 → 人员 | 公司 | 人员 |
| 公司 → 商机 | 公司 | 机会 |
| 人员 → 任务 | 人员 | 任务 |
| 人员 → 笔记 | 人员 | 备注 |
## 步骤 1:确定“一”和“多”两侧
在导入之前,确定哪个对象是父级,哪个是子级。
**自问:**“是否一个[对象 A]拥有多个[对象 B]?”
* 一个公司 → 多个人员 ✓(公司为父级)
* 一个人 → 多个公司 ✗(这是错误的——一个人隶属于一个公司)
## 步骤 2:先导入父级记录
在引用之前,父级(“一”侧)必须已存在于 Twenty 中。
**导入顺序:**
1. **公司** 优先(无依赖关系)
2. **人员** 其次(关联到公司)
3. **商机** 第三(关联到公司和/或人员)
4. **任务/笔记**(可关联到以上任一项)
**如果父级记录不存在,导入将失败。**
在导入包含公司引用的人员之前,请务必确认公司已导入。
## 步骤 3:记录父级的唯一标识符
您需要使用**唯一标识符**来引用父级记录。 可用选项:
| 父级对象 | 可用的唯一标识符 |
| --------- | --------------------------------- |
| **公司** | `id`(UUID)、`domain`(推荐)或任何自定义唯一字段 |
| **人员** | `id`(UUID)、`email`,或任何自定义唯一字段 |
| **工作区成员** | `id`(UUID)、`email`(而非姓名) |
| **自定义对象** | `id`(UUID),或任何标记为唯一的字段 |
\*\*建议:\*\*公司使用 `domain`,人员使用 `email`。 这些字段可读性强,且在电子表格中易于核对。
### 查找标识符
如果您需要 `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` |
**域名格式很重要!**
请使用 `https://domain.com`(而不是仅 `domain.com`)。 这与 Twenty 存储公司域名的方式一致,并可避免匹配错误。
### 重要规则
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
```
## 常见问题
您有两个选项:
1. 使用 Twenty 的 `id`(导出父级记录以获取其 ID)
2. 在数据模型中创建自定义唯一字段,用于存储来自旧系统的外部 ID
是! 包含子级记录的唯一标识符(例如,人员的 `email`)以及新的关系值。 导入将更新该关系。
目前尚不支持导入多对多关系。 计划于 2026 年上半年推出。
指向多个对象类型的关系目前尚不支持导入/导出。 此功能已在我们的路线图中。
导入会为该行显示错误。 您可以:
* 先导入父级记录,然后重新导入
* 修正引用值
* 从导入中移除该行
常见原因:
* 格式错误(域名请使用 `https://domain.com`)
* 大小写不匹配(检查拼写是否完全一致)
* 父级不存在(请先导入父级)
* 映射了多个标识符(仅使用一个)
**请注意:软删除的记录也会计入唯一性。**
如果您收到“not found”错误,但记录似乎存在,请检查命令菜单 → 查看已删除的记录。 父级可能已被软删除。
## 故障排除
遇到问题? 请查看:
* [如何修复导入错误](/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)