# 일괄 가져오기 스크립트 사용법 (예: vbulletin.rb)

**URL:** https://meta.discourse.org/t/how-to-use-a-bulk-import-script-e-g-vbulletin-rb/364289
**Category:** Development
**Created:** [4월 30, 2025, 8:02오후 UTC](https://meta.discourse.org/t/how-to-use-a-bulk-import-script-e-g-vbulletin-rb/364289 "2025-04-30T20:02:14Z")
**Posts on this page:** 1
**Page:** 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: [4월 30, 2025, 8:02오후 UTC](https://meta.discourse.org/t/how-to-use-a-bulk-import-script-e-g-vbulletin-rb/364289/1 "2025-04-30T20:02:14Z")

</div>

수백만 개의 게시물이 있는 vBulletin 4 가져오기를 수행하고 있습니다. 작업을 수행 중인 서버가 매우 느립니다(포기했을 때 사용자들이 분당 약 50개씩 가져오고 있었습니다). 간단한 계산에 따르면 3개월이 걸릴 것으로 보입니다.

그래서 대량 가져오기 스크립트에 다시 한 번 기회를 주기로 했습니다. 저는 일반 가져오기 스크립트를 프로덕션 컨테이너에서 실행합니다. 표준 스크립트를 잘 실행하던 바로 그 컨테이너가 Discourse 데이터베이스에 액세스할 수 없습니다. 하지만 대량 가져오기 도구는 프로덕션과 일반 가져오기 스크립트가 사용하는 것이 아니라 `/var/run/postgresql/.s.PGSQL.5432`에 액세스하려고 합니다. 그래서 `web_only.yml`에 다음을 추가했습니다.

```plaintext
  - volume:
      host: /var/discourse/shared/data/postgres_run
      guest: /var/run/postgresql

```

이제 postgres에 액세스할 수 있습니다.

하지만 이번에는 mysql에 액세스할 수 없습니다. 일반 스크립트에서 작동하고 컨테이너 내부의 mysql 명령줄에서도 작동하는 동일한 자격 증명이 작동하지 않습니다. 액세스가 거부됩니다. 자격 증명이 예상대로 모두 존재하는지 확인하기 위해 `puts`를 추가했는데, 실제로 모두 존재합니다. 하지만 일반 스크립트의 코드:

```plaintext
    @client =
      Mysql2::Client.new(host: DB_HOST, username: DB_USER, password: DB_PW, database: DB_NAME)

```

은 잘 작동하지만, 이 코드는

```plaintext
      @client =
        Mysql2::Client.new(
          host: host,
          username: username,
          password: password,
          database: database,
          reconnect: true,
        )

```

작동하지 않습니다. 확인해 보니

```plaintext
    puts "#{username}:#{password}@#{host}/#{database}"
    puts "PASSWORD: #{password.inspect}"

```

을 실행하면 모든 것이 예상대로 표시됩니다.

개발 환경에서 실행해야 하나요? (왜죠?)

mysql 클라이언트와 일반 가져오기 스크립트에서는 mysql 연결이 어떻게 작동하는지, 하지만 대량 스크립트에서는 왜 작동하지 않는지 정말 막막합니다. 코드는 똑같이 보입니다. `base.rb` 스크립트에서 mysql에 관한 내용은 아무것도 보이지 않습니다.

아니면, 그 머신에 귀신이 들린 건지도 모릅니다.
