2011-01-11 4 views
1

내 웹 응용 프로그램 용 MySQL을 Postgresql 마이그레이션으로 고려하고 있지만 기존 MySQL 데이터베이스를 Postgresql로 변환하는 데 어려움을 겪고 있습니다.자동 증분을 사용하여 MySQL에서 PostgreSQL로 마이그레이션 - 어떻게?

내가 시도 : 엔터프라이즈 DB에서 = PostgreSQL의 --compatible

  • 마이그레이션 마법사를

    • mysldump
    • PostgreSQL을 데이터 마법사 EMS
    • 에서
    • DBConvert DMSoft

    에서와 NONE의 위의 프로그램은 데이터베이스를 변환하는 좋은 일을합니다!

    mysql을 postgresql로 변환하기위한 Perl과 Python 스크립트를 보았지만 사용법을 알 수는 없습니다. (ActivePerl을 설치했는데 다음에해야 할 일을 이해하지 못합니다. 그 스크립트를 실행해라!)

    나는 항상 Auto Increment 필드를 프라이 머리 키로 사용한다. 이것들은 단지 무시된다. PostgreSQL은 다른 방법으로 자동 증분을하지만, MIGRATION 소프트웨어가 그렇게 구현하기가 힘들지 않습니까? 그렇지 않습니까?

    누군가가 기본 키로 자동 증분을 사용하여 MySQL 데이터베이스를 변환하는 데 더 나은 행적을 보았습니까?

  • +1

    DBConvert DID는 시퀀스를 만듭니다 ...하지만 레코드를 추가하면 오류가 발생하므로 마지막 번호가 올바르게 설정되지 않았다고 생각합니다. 테이블에서 모든 레코드를 제거하면 자동 증가가 작동합니다. 아직 완벽하지는 않지만 적어도 자동 증가를위한 이러한 시퀀스는 다음과 같아야합니다 .... – Dylan

    답변

    2

    나는 이것이 아마도 당신이 찾고있는 대답이 아니라는 것을 알고있다 : 나는 "자동화 된"이전 도구를 믿지 않는다.

    데이터베이스 스키마를 만드는 기존 SQL 스크립트를 사용하고 필요한 데이터 형식 (자동 번호 매핑은 자동으로 모든 시퀀스를 처리하는 serial에 맵핑 됨)을 검색하고 바꿉니다. 모든 "engine ="항목을 제거하고 그런 다음 Postgres에 대해 새 스크립트를 실행하십시오.

    이전 데이터베이스를 플랫 파일로 덤프하고 대상으로 가져옵니다.

    나는 MySQL을 위해 만들어진 샘플 데이터베이스로 이것을 여러 번했지만, 실제로 그렇게 오래 걸리지는 않는다.

    아마 모든 다른 "자동화 된"도구를 사용해 보는 것만 큼 오래 걸릴 것입니다.

    +0

    고맙습니다. 저는 많은 MySQL 사용자가 Postgresql로 업그레이드해야한다고 생각했습니다. 나를 위해 모든 것을 한 완벽한 도구. 문제는 내가 200 개 이상의 테이블을 가진 데이터베이스를 가지고 있고 아마도 PostgreSQL을 시도하면서 (그리고 기존 MySQL을 유지하면서) 여러 번 변환해야 할 필요가 있다는 것입니다. 나는 '시리얼'을 살펴볼 것입니다. 아직 그 중 하나를 찾지 못했습니다 ... – Dylan

    +0

    시리얼 데이터 유형 : http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL –

    0

    모든 "PostgreSQL gotchas"에 익숙한 경우에도 손으로 모든 단계를 수행하는 데 시간이 많이 걸릴 수 있습니다. 특히 DB가 "큰"경우에는 특히 그렇습니다. 일부 시도   other scripts/tools

    1

    왜 ETL 도구를 사용하지 않습니까? 당신은 덤프 또는 그런 것들에 대해 걱정할 필요가 없습니다. 저는 PostgresSQL과 MySQL로 이전했으며 자동 증가 필드에 아무런 문제가 없었습니다.

    연결 자격 증명을 알고 있어야합니다. 필자는 개인적으로 Pentaho (오픈 소스)를 사용합니다. .BAT 파일 숟가락을 사용

    다운로드 펜타의 ETL http://kettle.pentaho.org/

    에서의 압축을 풀고 실행 펜타 (.박쥐)

    새 작업을 만듭니다

    소스 데이터베이스 (PostgreSQL을)에 대한 DB 연결을 생성 - 사용 메뉴 : 도구 → 마법사 → 데이터베이스 연결을 생성 (F3) 대상 데이터베이스 (MySQL의)에 대한 DB 연결을 생성합니다 - 위에서 설명한 기술을 사용합니다.

    마법사를 실행하십시오 : 도구 → 마법사 → 표 복사 (Ctrl-F10).

    원본 (왼쪽 대화 상자 패널)과 대상 (왼쪽 대화 상자 패널)을 선택하십시오. 마침을 클릭하십시오.

    작업이 생성됩니다 - 작업을 실행하십시오.

    도움이 필요하면 알려주십시오.

    +0

    굉장해! –

    +0

    @RizwanPatel 기꺼이 도와 드리겠습니다. :) – Nick

    0

    이 질문은 오래된 질문이지만 MySQL에서 Postgres로 마이그레이션 할 때와 동일한 문제가 발생했습니다. 가능한 한 깔끔하게 데이터베이스 구조를 마이그레이션 할 수있는 최상의 마이그레이션 도구를 여러 개 시도한 후에 Pgloader https://github.com/dimitri/pgloader/은 Auto Increment를 Postgres 시퀀스로 변경하는 데 문제가 없으며 매우 빠릅니다.

    +0

    하지만 pgloader는 오픈 소스 생태계에서만 작동합니다. 거기에 문제가있는 데보이 비트가 있습니다! –

    관련 문제