MySQL 데이터베이스를 PostgreSQL로 변환하는 방법?


20

MySQL 데이터베이스를 PostgreSQL로 변환하기위한 명령 줄 도구가 있습니까? 또한 일반 mysqldump명령을 사용하여 데이터베이스를 변환하는 방법이 있는지 알고 싶습니다 .


1
여기에서 시작하십시오 : wiki.postgresql.org/wiki/…
a_horse_with_no_name

4
나는 이것을 볼 때마다 기쁨의 눈물을 흘린다.
rfusca


이것은 전체 사이트에서 가장 유용한 질문 중 하나입니다.
에반 캐롤

답변:


13

당신이 시도 했습니까?

mysqldump --compatible=postgresql dbname > export.sql

그런 다음 따옴표를 피하기 위해이 작업을 수행

sed "s/\\\'/\'\'/g" export.sql > export1.sql

좀 더 마사지가 필요할 수 있으므로 mysqldump doco를 자세히 살펴보십시오.


2
나는 이미 당신에게 주어진 방법을 시도했지만 postgresql에서 복원 할 때 오류가 발생합니다
Mughil

2
@Mughil 오류가 무엇입니까?
야누스 트롤 슨

4
5 년이고 mysqldump아직 아무도 고쳐 지지 않았습니다. syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Cees Timmerman

1
에 따르면 dev.mysql.com/doc/refman/8.0/en/... 에 대한 유일한 허용 값은 --compatible이다ansi
phunehehe

7

다음은 매우 유용한 몇 가지 오픈 소스 도구입니다.

FromMySqlToPostgreSql 은 기능 도달 도구이며 사용하기 매우 쉽습니다.
데이터 유형을 매핑하고 제약 조건, 인덱스, PK 및 FK를 MySQL db에있는 그대로 정확하게 마이그레이션합니다.
기본적으로 PostgreSQL COPY를 사용하므로 데이터 전송이 매우 빠릅니다.
PHP로 작성된 FromMySqlToPostgreSql (> = 5.4).

pgloader   는 COPY 명령을 사용하는 PostgreSQL 용 데이터 로딩 도구입니다. 사용하는 것보다 주요 이점

COPY
또는
\copy
pgloader는 거부 된 데이터의 개별 파일을 유지하지만 데이터베이스에 양호한 데이터를 계속 복사하는 트랜잭션 동작입니다. 기본 PostgreSQL 동작은 트랜잭션입니다. 즉, 입력 데이터 (파일 또는 원격 데이터베이스)의 잘못된 행이 테이블의 전체 벌크로드를 중지합니다. pgloader는 또한 데이터 형식 재 지정을 구현합니다. MySQL 날짜 스탬프 0000-00-00 및 0000-00-00 00:00:00을 PostgreSQL로 변환하는 전형적인 예입니다.
NULL
값은 달력에 1 년이 없었기 때문입니다.
pgloader는 LISP로 작성되고 소스 코드로 배포되므로 사용하기 전에 컴파일해야합니다.

희망이 당신을 도울 것입니다 ...


1
pgloader는 postgre 문서에서 권장되는 마이그레이션 도구이므로 최상의 선택이라고 말하고 싶습니다. 나는 50 + 테이블이있는 상당히 작은 DB에서 succes와 함께 사용했으며 매력처럼 작동했습니다.
Capaj

3

실제로 EnterpriseDB 자체에서 개발 한 사용하기 쉬운 무료 마이그레이션 도구가 있습니다. StackBuilder : Migration Toolkit을 통해 설치할 수 있습니다.


3

나는 최근에 DBConvert의 무료 도구를 사용 하여 액세스 데이터베이스를 postgres로 변환했으며, 무료로 안정적으로 시도하는 데 드는 시간과 비교할 때 돈이 가치가 있다는 것을 알았습니다. MySQL <-> postgres 와 비슷한 도구 판매합니다.이 도구 내가 사용하지 않았지만 명령 줄 도구에만 관심이 없다면 고려할 가치가 있습니다.

내가 어떤 식 으로든 그들과 제휴하지 않았다고 궁금한 경우 :-)


3

예를 들어 EnterpriseDB 마이그레이션 마법사를 사용할 수 있습니다.

OracleDB를 올바르게 마이그레이션 할 수 있습니다. 그러나 MySQL의 경우 몇 가지 제한 사항이 있습니다. 예를 들어 뷰, 트리거, 저장 프로 시저를 지원하지 않습니다.

자세한 내용은 EDB 마이그레이션 툴킷을 참조하십시오 . 확실하지 않지만 저장 프로 시저를 저장하는 경우 mysql-> oracle-> postgresql을 마이그레이션하여 가능할 수 있습니다 (있는 경우).

이 주제 파악 : 데이터베이스 및 SQL 마이그레이션 도구


1

이것은 기존 답변에 추가하는 것이므로이 솔루션을 찾는 데 도움이되었습니다. FromMySqlToPostgreSql을 사용 했습니다 . FromMySqlToPostgreSql 을 다운로드하여 추출 하고 샘플 구성 파일의 사본을 작성한 후 db 연결 값을 설정하고 다음 명령으로 색인 파일을 실행하기 만하면 됩니다.

PHP index.php config.xml

간단하면서도 효과적입니다!


이 도구에 대한 링크를 사용하여 게시물을 편집 할 수 있습니까?
dezso

미안, 잊어 버렸어 추가되었습니다!
toing_toing

아, 재밌 네요 도구 작성자가 답변을 게시했음을 알고 있습니까? ;) 이제 했어요.
dezso

나는 기뻐! 그는 자신의 멋진 플러그인에 대해 많이 설명하지 않았습니다.
toing_toing

0

인덱스, fks 및 데이터를 포함하여 MySQL 데이터베이스를 PostgreSQL 데이터베이스로 변환하는 기능을 제공하는 오픈 소스 도구가 있습니다.

https://github.com/ggarri/mysql2psql

이 도구를 사용하면 스키마 변경 사항을 정의하여 런타임시 현재 스키마로 일부 업그레이드를 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.