--- 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)