해당 덤프 파일을 다음 위치에 직접 공급할 수 있어야합니다 psql
.
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
당신이 원하는 경우 id
"자동 증가"에 열을 후 테이블 생성 줄에 "시리얼"에서 "INT"에서 유형을 변경합니다. 그런 다음 PostgreSQL은 해당 열에 시퀀스를 연결하여 NULL ID가있는 INSERT에 다음 사용 가능한 값을 자동으로 할당합니다. PostgreSQL은 AUTOINCREMENT
명령을 인식하지 못 하므로 제거해야합니다.
또한 datetime
SQLite 스키마에서 열 을 확인 timestamp
하고 PostgreSQL 용으로 변경하고 싶을 것 입니다. ( 이 점을 지적 해 주신 Clay 에게 감사드립니다 .)
당신이 당신의 SQLite는의 논리 값이 있다면 당신은 변환 할 수 1
와 0
로 1::boolean
와 0::boolean
(각각)하거나 덤프의 스키마 섹션에서 정수로 부울 열을 변경 한 다음 가져 오기 후 PostgreSQL의 내부에 손으로 그들을 해결할 수 있습니다.
SQLite에 BLOB가있는 경우를 사용하도록 스키마를 조정하고 싶을 것 bytea
입니다. 일부 decode
통화도 믹스해야 할 것입니다 . 하지만 처리해야 할 BLOB가 많으면 좋아하는 언어로 빠르고 더러운 복사기를 작성하는 것이 SQL을 조작하는 것보다 쉬울 수 있습니다.
평소처럼 외래 키가있는 경우 set constraints all deferred
삽입 순서 문제를 방지하기 위해 BEGIN / COMMIT 쌍 안에 명령을 배치하는 것이 좋습니다.
부울, 블롭 및 제약 사항 메모에 대해 Nicolas Riley 에게 감사드립니다 .
`
일부 SQLite3 클라이언트에 의해 생성 된 코드 가있는 경우 이를 제거해야합니다.
PostGRESQL은 또한 unsigned
열을 인식하지 않으므로이를 삭제하거나 다음과 같은 사용자 지정 제약 조건을 추가 할 수 있습니다.
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
SQLite는 기본적으로 null 값 ''
을로 설정하지만 PostgreSQL에서는이를로 설정해야합니다 NULL
.
SQLite 덤프 파일의 구문은 대부분 PostgreSQL과 호환되므로 몇 가지를 패치하고 psql
. SQL INSERT를 통해 많은 양의 데이터를 가져 오는 데는 시간이 걸릴 수 있지만 작동합니다.