필자는 큰 mysql 데이터베이스를 postgresql로 변환하는 변환 도구를 필사적으로 찾고 있습니다. 도구 / 스크립트가 필요합니다 :
- 비어 있는
- 리눅스에서 작동
- 사용하기 쉽고 버그가 없습니다.
- 실제로 시도하고 작동하는지 확인하십시오.
- Java 또는 Ruby로 작성하지 않는 것이 좋습니다.
여기 에 나열된 다른 도구를 시도 했지만 아무도 효과가 없었습니다.
미리 감사드립니다.
필자는 큰 mysql 데이터베이스를 postgresql로 변환하는 변환 도구를 필사적으로 찾고 있습니다. 도구 / 스크립트가 필요합니다 :
여기 에 나열된 다른 도구를 시도 했지만 아무도 효과가 없었습니다.
미리 감사드립니다.
답변:
서로 다른 두 DBMS간에 마이그레이션하려면 를 많이 보다 단지 데이터를 마이그레이션하는 것보다. 그러나 데이터 마이그레이션은 일반적으로 가장 쉬운 부분입니다.
내가 시도한 방식은 무료이며 작동하는지 확인할 수 있습니다.
2 월 31 일과 같이 잘못된 데이터를 수락하는 MySQL의 동작에 의존하는 경우 실제로 데이터를 가져 오는 것이 어려울 수 있습니다.
내 생각에 이것은 도구를 검색하고 도구를 평가 한 다음 선택한 도구를 이해하려고 시도하는 것보다 빠를 것입니다. 그러나 그것은 당신이 말하는 "큰"종류에 달려 있습니다. 큰 테이블이 수백 개의 테이블 인 경우에는 불가능할 수 있습니다. 큰 행 수만 참조하는 경우 가장 빠른 방법 일 것입니다.
Liquibase , SchemaSpy 또는 WbSchemaReport 와 같은 DBMS 독립 (XML) 형식으로 데이터베이스 스키마를 덤프 할 수있는 몇 가지 도구가 있습니다. . 아마도 Liquibase가 가장 사용하기 쉬울 것입니다. 나머지는 생성 된 XML을 변환하기 위해 XSLT를 수동으로 작성 / 확장해야합니다.
MySQL에서 트리거 및 저장 프로 시저를 사용하는 경우 나중에 수동으로 수정하지 않아도 번역 할 수 있는 자동화 된 도구 가 없다고 생각 합니다. 생성 된 프로시 저는 아마도 대상 DBMS의 고급 기능을 사용하지 않을 것입니다 .
최근에 해왔고 도구를 찾고 도구를 사용하는 데 너무 오래 걸렸기 때문에 vim과 replacement-foo로 한 손으로 해냈습니다.
INT NOT NULL AUTO_INCREMENT
과 같이 바꾸십시오 (또는 이와 같은 것)SERIAL
TEXT
(사용에는 속도 차이를 TEXT
, VARCHAR
또는 유사한)
`ENGINE InnoDB
(또는 무엇이든)UNSIGNED
BYTEA
'
하고 다른 것은 사용 하지 않습니다CONCAT
비표준 문자열 연결에 대한 폴백으로 9.1을 사용하기 전에 'string' || ' string'
"
각 글 머리 기호는 단일 대체로 수행해야합니다.
스키마와 데이터를 별도로 내보냈습니다 . INSERT
대신 s 를 사용하십시오 COPY
. 진행중인 펜스가 없으면 데이터를 정리할 필요가 없습니다. 모든 것이 켜져 있는지 확인하십시오 UTF-8
. 두 개의 별도 파일을 사용하면 스키마를보다 관리하기 쉽고 편집 할 1GB 파일이 없습니다.
스키마를로드 할 때 오류가 발생한 위치에 대한 자세한 정보를 얻을 수 있으므로 디버깅이 매우 간단합니다.
나는 이것을 시도한 적이 없지만 Tungesten Replicator 가 원하는 것을 할 수 있습니다. 주로 복제 도구이지만 적어도 데이터 조각에 도움이되는 부트 스트랩 프로세스가있을 수 있다고 생각합니다.