# Yammer 가져오기 PM을 가장 잘 만드는 방법

**URL:** <https://meta.discourse.org/t/to-best-to-create-a-yammer-importer-pm/227849>\
**Category:** Development\
**Created:** [5월 23, 2022, 3:09오후 UTC](https://meta.discourse.org/t/to-best-to-create-a-yammer-importer-pm/227849 "2022-05-23T15:09:23Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [5월 23, 2022, 3:09오후 UTC](https://meta.discourse.org/t/to-best-to-create-a-yammer-importer-pm/227849/1 "2022-05-23T15:09:23Z")

</div>

누군가를 위해 [yammer](https://www.microsoft.com/en-us/microsoft-365/yammer/yammer-overview) 가져오기(importer)를 만들었고, 공개하기를 원합니다. (Hey @gerhard , 이건 아마 당신의 전문 분야일 것 같아요.) yammer의 인기가 왜 그런지, 그리고 곧 많은 사람들이 새로운 플랫폼을 원하게 될지, 아니면 대부분의 사람들이 플랫폼을 떠날 때 데이터가 사라지는 것을 그냥 받아들일 것인지는 정확히 파악이 안 됩니다.

yammer 내보내기(export)는 CSV 파일들의 묶음이라, 가져오기 스크립트는 `script/import_scripts/base/generic_database.rb`를 사용합니다. 개인 메시지(PM) 가져오기를 포함했는데, 이를 위해 `generic_database.rb`에 테이블 두 개를 추가해야 했습니다. 기존 코드를 억지로 PM 처리에 맞게 바꾸어 다른 가져오기 도구(zendesk, zendesk\_api, answerbase)에서 사용할 때 깨질 위험을 감수하기보다는, PM을 위한 별도의 코드를 추가하는 것이 더 합리적이라고 생각했습니다. 또한 첨부 파일은 `generic_database.rb`를 사용하는 다른 스크립트들과는 다르게 처리되어야 하므로, 제 PM 테이블은 다른 것들이 업로드를 관리하는 방식(이 부분은 정확히 이해가 안 됐습니다)과는 다르게 업로드를 관리합니다. 범용 가져오기 도구가 사용하는 `topic_upload`와 `post_upload` 대신 별도의 업로드 테이블도 추가했습니다.

```plaintext
    def create_upload_table
      @db.execute <<-SQL
        CREATE TABLE IF NOT EXISTS upload (
          id #{key_data_type} NOT NULL PRIMARY KEY,
          user_id INTEGER,
          original_filename TEXT,
          filename TEXT,
          description TEXT,
          url TEXT
        )
      SQL
    end

```

현재 코드는 `raw`에서 업로드에 대한 참조를 발견하면 업로드를 처리합니다. 또한 사용자 참조를 discourse의 `@username` 참조로 대체합니다. 또한 기이한 `opengraphobject`를 처리하며, 존재하는 경우 이를 사용하여 주제 제목을 생성합니다(제가 이 스크립트를 작성한 덤프의 대부분 주제에서는 제목이 빠져 있었습니다).

#### 질문:

- 이 정도 설명으로 이 질문에 답할 수 있을 만큼 충분한가요?
- 코어에 PM을 생성해야 하나요, 아니면 독립된 저장소로 포함해야 하나요 (discourse 소스 트리 안에 코드를 복사하고 거기서 실행하는 스크립트를 포함할 것입니다)
- `generic_database`에 대한 추가 사항이 합리적인가요, 아니면 가져오기 스크립트에서 그 클래스에 추가해야 하나요, 아니면 제 스크립트에 추가 함수를 포함시켜 전역 `@db`를 참조하게 하면 될까요?

---

_[View the full topic](https://meta.discourse.org/t/to-best-to-create-a-yammer-importer-pm/227849)._
