001c2097a3
Created by Github action <!-- mintlify-editor-comments:start --> Mintlify --- 0 threads from 0 users in Mintlify - No unresolved comments <!-- mintlify-editor-comments:end --> <!-- mintlify-comment--> <a href="https://dashboard.mintlify.com/twenty/twenty/editor/i18n-docs?source=pr_comment" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg"><img src="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg" alt="Open in Mintlify Editor"></picture></a> <!-- /mintlify-comment --> Co-authored-by: github-actions <github-actions@twenty.com>
226 lines
8.2 KiB
Plaintext
226 lines
8.2 KiB
Plaintext
---
|
||
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)
|