SQLite에서 PostgreSQL로 마이그레이션하는 도구


11

SQLite에서 PostgreSQL로 지속적으로 마이그레이션해야합니다. 지속적으로, 나는 매일 SQLite 데이터베이스를 PostgreSQL로 다시 가져옵니다. PostgreSQL 데이터베이스를 수동으로 변경할 필요없이 SQLite에서 테이블을 변경할 수 있다면 좋을 것입니다. Python에서 마이그레이션을 실행하지만 명령 줄에서 제어 할 수있는 외부 도구 일 수 있습니다. 이 도구는 Linux에서 사용할 수 있어야하며 Windows에서도 실행되는 것이 좋습니다.


1
명확히하기 위해 데이터와 스키마를 모두 마이그레이션해야합니까?
h0tw1r3

1
PG 위키 에서 확인 했습니까?
Denis de Bernardy

왜 이렇게해야하는지 자세히 설명해 주시겠습니까? 아마도 데이터베이스를 처리하고 변환하는 것보다 루트 문제에 접근하는 더 좋은 방법이있을 것입니다. 예를 들어 CleanFill은 ETL 개발을 제안했습니다.
Nick Chammas

@Nick 죄송합니다. 설명하기에 너무 많은 설명 / 토론이 필요한 매우 특별한 경우입니다.
David

@David-더 많은 답변을 원한다면 너무 많은 설명 / 토론없이 가능한 한 다른 단락에서 유스 케이스를 요약하는 것이 도움이 될 수 있습니다. 그것이 의미하는대로 당신은 우리에게 너무 많은 추측을하도록 요구하고 있습니다. 다른 SE 사이트에 대한 링크 는 귀하가 어디에서 왔는지 이해하는 데 항상 도움이됩니다.
잭 topanswers.xyz 시도라고

답변:


3

데이터베이스간에 마이그레이션하기 위해 Navicat을 사용하고 있습니다 (주로 MSSQL / MySQL). Linux 및 Windows에서 실행되지만 주로 GUI 도구입니다. 프로파일을 작성하면 명령 행에서 시작할 수 있습니다. 30 일 평가판을 다운로드 할 수 있습니다.


팁 주셔서 감사합니다. 단일 명령 행 입력을 사용하여 전체 마이그레이션 프로세스를 실행할 수 있습니까?
David

1
Navicat 지원팀에이 질문을하는 것이 좋습니다. 그들은 매우 도움이됩니다 (IMO). 웹 사이트에 따르면 작동해야하지만 이것을 테스트 / 사용할 필요는 없었습니다.
pritaeas

4

ETL 도구를 사용해 보셨습니까? 그들은 외부에 있으며 pentaho는 Windows와 Linux 모두에서 실행되며 무료라고 생각합니다. pentaho의 사이트


안녕하세요, 사이트에 오신 것을 환영합니다! 나는 펜타 호에 대해 알고 있지만 이것이 해결 될 수 있다는 것을 몰랐다. 그것이 생각하는 것을 해결할 수 있습니까?
David

1
나는 질문을 읽는 동안 ETL에 대해서도 생각하고 있었지만 오버 헤드와 학습 곡선이 다소 높다고 생각합니다. 또한, "계속"마이그레이션을 수행하는 것이 쉽지 않을 것이라고 생각합니다.
DrColossos

감사! 개인적으로 SSIS에 대해 더 잘 알고 있지만 SQL Server와 함께 제공되며 SQL 라이센스 비용을 지불해야합니다. Pentaho는 ETL 도구이며 데이터를 소스에서 대상으로 마이그레이션 할 수 있습니다. 소스 / 대상과 통신하려면 올바른 드라이버가 필요합니다. ETL 도구에는 약간의 학습 곡선이 있지만 도구 상자의 또 다른 도구입니다. 데이터 마이그레이션을위한 몇 가지 단계 1과 DDL 변경 마이그레이션을위한 단계가 있습니다. 나는 1부터 시작합니다-데이터를 이동하기 만하면됩니다 (쉽게 단계). 일단 내려 놓으면 더 편안하게 진행할 수 있습니다.
CleanFill

새로운 ETL 도구를 사용하는 학습 곡선과 복잡성을 감안할 때 펜타 호를 사용하는 것이 Java 또는 Python으로 처음부터 작성하는 것보다 빠를 것이라고 확신하지 못합니다.
David

@ 데이비드 - 새로운 ETL 도구를 학습은 다시 발명 IMO 바퀴보다 훨씬 쉽게 될 가능성이 높습니다
topanswers.xyz 잭 시도는 말한다

2

나는 그것이 가능하다고 생각하지만 많은 사람들이 그것에 만족할 것이라고 생각하지 않습니다. 일반적인 경우 PosgreSQL과 SQLite는 테이블 정의를 매우 다르게 취급합니다.

CREATE TABLE test (trans_date date primary key);

SQLite에서 해당 테이블의 내용을 덤프하면 얻을 수있는 것이 있습니다.

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (trans_date date primary key);
INSERT INTO "test" VALUES('2011-01-01');
INSERT INTO "test" VALUES('Oh, bugger.');
COMMIT;

모든 열은 PostgreSQL 측에서 VARCHAR ()이어야한다고 생각합니다. 모든 SQLite 데이터 유형을 VARCHAR ()로 변경하는 스크립트를 작성하는 것은 어렵지 않을 수 있습니다. 그러나 해변에서 죽은 고래를 걷어차는 것과 같은 끔찍한 느낌이 들었습니다.


모든 열을 VARCHAR로 변환하는 것만으로는 충분하지 않습니다. 이를위한 도구 나 적절한 방법이 있어야합니다.
David

위의 예제 테이블에서 PostgreSQL에 날짜 열이있는 테이블을 만들 수 있지만 두 행을 모두 가져올 수는 없습니다. 따라서 일반적인 경우 VARCHAR (n) 이외의 다른 기능은 작동하지 않을 것이라고 생각합니다.
Mike Sherrill 'Cat Recall'11

왜 "아, 버거." SQLite의 가치?
David

2
@David : SQLite를 사용하면 "date"유형의 열에 "Oh, bugger"를 저장할 수 있습니다. SQLite를 사용하면 거의 모든 열에 무엇이든 저장할 수 있습니다. 이는 SQLite를 SQL 표준에 가까운 모든 dbms로 마이그레이션 할 때 발생하는 주요 문제 중 하나입니다.
Mike Sherrill 'Cat Recall'6

1

당신이 사용할 수있는

ESF 데이터 마이그레이션 툴킷 .

나는 그것을 시도하고 잘 작동하며 여러 유형의 데이터베이스에서 sqlite, mysql, mssql, oracle, postgresql 및 많은 많은 유형과 같은 여러 유형의 데이터베이스로 변환하는 옵션을 제공합니다!

시험판 / 평가판 만 보시면 결과가 정말 만족 스럽습니다!


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