Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 3s
202 lines
8.0 KiB
Plaintext
202 lines
8.0 KiB
Plaintext
---
|
|
title: CSV로 회사 가져오기
|
|
description: Twenty로 회사를 가져오는 포괄적인 단계별 가이드.
|
|
---
|
|
|
|
## 개요
|
|
|
|
이 가이드는 회사를 Twenty로 가져오는 과정을 단계별로 안내합니다. **회사는 먼저 가져와야 합니다**. People과 Opportunities가 회사에 연결되기 때문입니다.
|
|
|
|
## 시작하기 전에
|
|
|
|
### 사전 준비 체크리스트
|
|
|
|
<Check>
|
|
파일이 CSV, XLSX 또는 XLS 형식임
|
|
</Check>
|
|
|
|
<Check>
|
|
파일의 레코드가 10,000개 미만임
|
|
</Check>
|
|
|
|
<Check>
|
|
파일에 중복된 도메인이 없음
|
|
</Check>
|
|
|
|
<Check>
|
|
모든 사용자 정의 필드가 **Settings → Data Model**에 존재함
|
|
</Check>
|
|
|
|
<Note>
|
|
10,000개 이상의 회사를 가져와야 하나요? 여러 파일로 분할하거나 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요.
|
|
</Note>
|
|
|
|
## 1단계: 회사 데이터 준비
|
|
|
|
### 필수 및 권장 필드
|
|
|
|
| 필드 | 필수? | 형식 | 노트 |
|
|
| ------------- | ----- | -------------------- | ------------------ |
|
|
| **Name** | 권장 | 텍스트 | 회사 표시 이름 |
|
|
| **도메인** | 권장 | `https://domain.com` | 고유 식별자 |
|
|
| **주소** | 선택 사항 | 여러 열 | 아래 참조 |
|
|
| **직원 수** | 선택 사항 | 숫자 | 직원 수 |
|
|
| **사용자 정의 필드** | 선택 사항 | 항목에 따라 다름 | Data Model에 존재해야 함 |
|
|
|
|
### 도메인 형식
|
|
|
|
<Warning>
|
|
**도메인에는 `https://domain.com` 형식을 사용하세요.**
|
|
|
|
이는 이메일/캘린더 동기화로 회사가 자동 생성될 때 사용하는 형식과 일치하여, 이후 중복을 방지합니다.
|
|
</Warning>
|
|
|
|
**도메인 열:**
|
|
|
|
* **Domain / Domain Label**: `acme.com`
|
|
* **Domain / Domain URL**: `https://acme.com`
|
|
|
|
### 주소 형식
|
|
|
|
주소는 여러 열로 구성된 중첩 필드입니다:
|
|
|
|
```
|
|
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
|
|
123 Main Street,San Francisco,CA,USA,94105
|
|
```
|
|
|
|
### CSV 예시 구조
|
|
|
|
```csv
|
|
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
|
|
Acme Corp,https://acme.com,acme.com,San Francisco,USA,250
|
|
Widget Co,https://widgets.co,widgets.co,New York,USA,50
|
|
```
|
|
|
|
<Note>
|
|
**전문가 팁:** 가져오기 중에 **Download sample file**을 클릭하여 Twenty가 기대하는 정확한 열 이름을 확인하세요.
|
|
</Note>
|
|
|
|
## 2단계: 가져오기 기능에 액세스
|
|
|
|
**옵션 1: Companies 보기에서**
|
|
|
|
1. 왼쪽 사이드바에서 **Companies**로 이동하세요
|
|
2. 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
|
|
3. **Import records**를 선택하세요
|
|
|
|
**옵션 2: 커맨드 메뉴 사용**
|
|
|
|
1. `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)를 누르세요
|
|
2. "import"를 입력하세요
|
|
3. **Import records**를 선택하세요
|
|
4. **Companies**를 선택하세요
|
|
|
|
## 3단계: 파일 업로드
|
|
|
|
1. **Select file**을 클릭하세요
|
|
2. CSV, XLSX 또는 XLS 파일을 선택하세요
|
|
3. Twenty가 파일을 분석할 때까지 기다리세요
|
|
|
|
## 4단계: 열 매핑
|
|
|
|
Twenty가 열을 필드에 자동으로 매칭하려고 시도합니다. 검토 및 조정:
|
|
|
|
1. **자동 매핑 확인** — 올바른지 확인하세요
|
|
2. **잘못된 매핑 수정** — 드롭다운을 클릭하여 올바른 필드를 선택하세요
|
|
3. **열 건너뛰기** — 가져오지 않을 열은 **Do not map**을 선택하세요
|
|
|
|
### 중요한 매핑 규칙
|
|
|
|
* **Domain**: **Domain / Domain URL**에 매핑하세요(Domain Label이 아님)
|
|
* **Address**: 각 부분을 해당 열(City, State 등)에 매핑하세요
|
|
* **선택 필드**: 값은 기존 옵션과 일치해야 합니다(또는 다음 단계에서 매핑하게 됩니다)
|
|
|
|
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
|
|
|
|
## 5단계: 선택 필드 값 매핑
|
|
|
|
선택 또는 다중 선택 필드가 있는 경우:
|
|
|
|
1. Twenty에서 사용자의 값을 기존 옵션과 나란히 표시합니다
|
|
2. 파일의 각 값을 Twenty 옵션과 매칭하세요
|
|
3. 필요하면 새 옵션을 만드세요
|
|
|
|
<Note>
|
|
선택 옵션은 표시 레이블이 아니라 **API 이름**을 사용합니다. API 이름을 보려면 **Settings → Data Model**에서 **Advanced mode**를 활성화하세요.
|
|
</Note>
|
|
|
|
## 6단계: 오류 검토 및 수정
|
|
|
|
가져오기를 완료하기 전에 Twenty가 데이터를 검증합니다:
|
|
|
|
1. **Next Steps**를 클릭하세요
|
|
2. 오류가 있는 행은 **노란색**으로 강조 표시됩니다
|
|
3. **오류를 직접 수정** — 셀을 클릭하고 값을 편집하세요
|
|
4. **문제가 있는 행 제거** — 해당 행을 건너뛰려면 X를 클릭하세요
|
|
|
|
### 일반적인 회사 가져오기 오류
|
|
|
|
| 오류 | 원인 | 해결책 |
|
|
| -------------- | ------------------- | --------------------------- |
|
|
| **중복 도메인** | 도메인이 Twenty에 이미 존재함 | 파일에서 제거하거나 기존 레코드를 업데이트하세요 |
|
|
| **잘못된 도메인 형식** | 잘못된 형식 | `https://domain.com`을 사용하세요 |
|
|
| **필수 필드 누락** | 필수 필드가 비어 있음 | 값을 입력하거나 해당 행을 제거하세요 |
|
|
|
|
## 7단계: 가져오기 완료
|
|
|
|
1. 가져오기 요약을 검토하세요
|
|
2. 가져오려면 **확인**을 클릭하세요
|
|
3. 가져오기가 완료될 때까지 기다리세요
|
|
4. 몇 개의 레코드를 확인하여 검증하세요
|
|
|
|
## 회사 가져오기 후
|
|
|
|
이제 회사에 연결되는 레코드를 가져올 수 있습니다:
|
|
|
|
1. **[연락처 가져오기](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)** — 도메인을 사용하여 회사에 연결하세요
|
|
2. **기회 가져오기** — 회사에 연결하세요
|
|
3. **가져오기를 검증** — 데이터가 올바른지 확인하기 위해 몇 개의 레코드를 샘플로 점검하세요
|
|
|
|
## 기존 회사 업데이트
|
|
|
|
새로 생성하는 대신 회사를 업데이트하려면:
|
|
|
|
1. 파일에 `domain` 또는 `id` 열을 포함하세요
|
|
2. Twenty는 이 고유 식별자로 레코드를 매칭합니다
|
|
3. 기존 회사는 업데이트되고, 새 회사는 생성됩니다
|
|
|
|
자세한 내용은 [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)을 참조하세요.
|
|
|
|
## FAQ
|
|
|
|
<AccordionGroup>
|
|
<Accordion title="왜 두 회사가 동일한 도메인을 가질 수 없나요?">
|
|
도메인은 Twenty에서 고유 식별자입니다. 이는 중복 회사를 방지하고 이메일 동기화가 올바른 회사에 이메일을 정확히 연결되도록 보장합니다.
|
|
</Accordion>
|
|
|
|
<Accordion title="도메인이 없는 회사가 있으면 어떻게 하나요?">
|
|
도메인을 비워둘 수 있습니다. 하지만 더 나은 데이터 품질과 자동 이메일 연결을 위해 가능하면 도메인을 추가할 것을 권장합니다.
|
|
</Accordion>
|
|
|
|
<Accordion title="People이 연결되지 않은 회사를 가져올 수 있나요?">
|
|
예! 먼저 회사를 가져온 다음, 이후 개인을 가져와 회사 도메인을 사용해 서로 연결할 수 있습니다.
|
|
</Accordion>
|
|
|
|
<Accordion title="이미 존재하는 도메인을 가져오면 어떻게 되나요?">
|
|
기존 회사와 일치하는 고유 식별자(도메인 또는 id)를 포함하면, Twenty는 중복을 생성하는 대신 해당 회사를 업데이트합니다.
|
|
</Accordion>
|
|
|
|
<Accordion title="'duplicate domain' 오류는 어떻게 해결하나요?">
|
|
파일에서 중복을 제거하거나, 회사의 `id`를 포함하여 기존 레코드를 업데이트하세요.
|
|
</Accordion>
|
|
</AccordionGroup>
|
|
|
|
## 문제 해결
|
|
|
|
문제가 있으신가요? 확인하세요:
|
|
|
|
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
|
|
* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)
|
|
* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
|