database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 5100 게시물 읽기
No. 5100
7.3.x 버전으로 자료 이전 하기 참고.
작성자
김상기(ioseph)
작성일
2003-12-15 03:15
조회수
1,498

언젠가 써야지 하면서 이제야 쓰네요.

 

7.3.x 버전이 다른 버전과 달리 꽤 많은 부분이 바뀌었습니다. 그래서, 향후 계속해서 PostgreSQL 서버를 이용한 자료 관리를 하고자 한다면, 7.3.x 기준의 자료 구조로 다시 변경작업을 해주어야 뒷날 고생을 덜합니다.

 

7.4 버전이 나오면서 일하고 있는 곳에서 자료를 더 이상 옛날 DB에 넣어두었다가는 나중에 고생할 것 같아 큰 마음 먹고 자료 이전 작업을 일주일째 하고 있습니다. (워낙 덩치가 큰 놈(?) 인데다가 자료구조가 난해해서 애 먹고 있네요)

 

7.3.x 이상 버전으로 자료를 이전 하고자 하는 분들은 다음 주의 해야할 사항들을 참고 하세요.

 

주의해야할 사항.

  1. serial 자료형.
    테이블 정의 할 때, serial로 정의 해 두면, nextval()로 바뀌던 문제가 해결되었습니다. 그래서, 덤프 된 CREATE TABLE 구문에서 serial 정의를 다시 조정할 필요가 있습니다. 굳이 하지 않아도 되지만, 해 두면 나중에 테이블 삭제할 때, 해당 시퀀스도 같이 삭제가 됩니다. 이렇게 한다면, 덤프 파일에서 CREATE SQUENCE 구문이 필요없어지겠지요.
  2. 정수형 자료형
    모든 쿼리에서 정수형 자료형에서 '' (빈문자열)을 허용하지 않습니다. 만일 이런식으로 정의 되었거나(default '') 사용하고 있다면(where integer_column = '') 모두 수정해 주어야합니다.
  3. 날짜형 자료형
    datetime 자료형이 timestamp 자료형으로 바뀌었습니다.
    날짜의 +, - 연산은 오직 date 형에서만 가능합니다. 시간까지 고려해야한다면, interval 형 변환자를 사용하셔야합니다.
    now() - 2 (잘못된 구문)
    now()::date - 2 (바른 구문) 또는 now() - interval '2 days'
  4. foreing key
    foreign key 정의 방식이 완벽하게 변경되어버렸습니다. 기존 트리거 정의로 표현 했던 놈을 정확하게, 제약조건 외래키로 정의하고 있습니다. 이놈도 굳이 변경할 필요는 없지만, 훗날을 생각한다면, 덤프파일을 살펴보면서 다시 정의할 필요가 있습니다.
  5. trigger
    만일 윗 작업 때문에, 스키마와 자료를 분리해서 덤프 받고, 스키마 먼저 수정해서 새 DB에서 만들고, 자료를 나중에 집어넣을 요량이라면, 트리거 정의 부분을 주의하셔야합니다.
    방법은,
    pg_dump -s dbname > db_sechema.sql
    pg_dump -a dbname > db_data.sql
    이렇게 두개를 받고, db_sechema.sql 파일을 열어서 위에서 언급한 모든 부분을 수정하고, 반드시 트리거 정의 부분은 분리해서 다른 파일로 따로 저장해 둡니다. 이 트리거 정의 부분 파일은 데이터를 모두 집어 넣고 난 다음에 맨 마지막에 실행 시켜주어야 자료가 완벽하게 이전되겠지요.

schema, table return function, domain, execute, ... 포기하기에는 아까운 기능들이 너무 많아서 이 고생을 하고 있습니다. 아무도 알아 주지도 않는데 말이지요. :(

[Top]
No.
제목
작성자
작성일
조회
5103[질문] '똥통휴지'와 '바보바보'는 같다? [4]
임유빈
2003-12-16
1931
5102서버레벨에서 prepare 유지하는 방법 없을까요? [1]
신기배
2003-12-16
1193
5101순차적인 UPDATE를 한방에 할수는 없나요?? [1]
재학
2003-12-15
1605
51007.3.x 버전으로 자료 이전 하기 참고.
김상기
2003-12-15
1498
5099사용자 함수를 공유할려면? [2]
초보
2003-12-13
1388
5098DSN에 사용된 소스에 관해.. [1]
부엉
2003-12-12
1248
5097pgsql에서 '아햏햏' 입력하기... 확장 완성형 문제 해결 방법? [9]
박성철
2003-12-12
3201
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다