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 7364 게시물 읽기
No. 7364
DB 업그레이드하면서 데이타를 옮길려고 합니다. 인코딩 변경해서요. 고수님들 의견 부탁 드립니다.
작성자
김대헌(terisss)
작성일
2008-03-05 17:18ⓒ
2008-03-05 17:23ⓜ
조회수
5,789

    사용하고 있는 psql 의 데이타를 옮기려고 합니다. 
    DB를 사용하는 것은  VC++로 된 어플리 케이션과 웹입니다.

   현재 사용하고 있는 버전이 psql 7.2.3 버전이고, 테이블이랑 안에 있는 데이타까지 새로 
   설치한  PC에  psql 8.1.3  서버로  옮기려고 합니다. 
   근데 문제가 새로 리눅스를 설치한 PC 가 일본에서 사용하게 될 거라서  DB를 EUC_JP로 변경할 
   예정입니다.

    psql7.2.3 (EUC_KR)   =>   psql8.1.3(EUC_JP) 

    이렇게 되는데요. 이렇게 변경한 이유는 일본어를 VC++로 만든 프로그램에서  사용하기 위함입니다.
    웹이 SJIS 로 되어 있어서 서버 인코딩을 EUC_JP 로 바꾸고 클라이언트 인코딩을 SJIS로 변경하여 
    제대로 입력되는 것을 확인 했습니다. 근데 psql 7.2.3에서는 안되고 psql 8.1.3 에서 제대로 
    되더군요. 
    접속 프로그램은 ODBC에서 자동적으로 변경을 해줘서 제대로 웹에서 입력한 정보가 보이고, 
    입력이 됩니다.

    그리고, psql7.2.3 에 있는 데이타들은 대부분이 영문입니다.
        
    여기서 이제 DB를 백업하려고 하는데 
    pg_dump -s  -Uadmin -d test  > backup.sql   ->psql 7.2.3
    pgsql  -s  -U admin -d test  <  backup.sql  ->psql 8.1.3 

    이런식으로 하려고 합니다. 
    
    근데 문제가 발생을 했습니다.  psql 7.2.3 버전은 내부적으로 트리거를 사용하고 있습니다. 
    "DELETE CASCADE ON UPDATE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE" 
    이런 옵션들이 달린 테이블이 상당합니다. 
 

     A,B,C 테이블이 있다고 가정할 때 A테이블의 데이타를 지우면 B 와 C 테이블의 데이타가 
     지워지고  A테이블의 데이타를 입력하면 B와 C의 데이타를 확인하고 같은 값이 있을때만 
     입력을 허용하는 식의 설정이 되어 있습니다. 
     자동 증가시키는 것도 테이블마다 추가 되어 있는 것도 있습니다. 
     DB를 백업하고 위의 명령어로 풀었을 경우  이런 관계들이 그대로 가지지는 않는 것 같습니다. 
 
     그래서인지 전임자는 아예 psql 폴더채로 스케줄러를 돌려서 백업을 하고, DB가 깨지면 해당 
     압축 파일을 통째로 푸는 걸로  복구를 했던건지.
      
     1.테이블의 트리거 까지 이상없이 옮길수 있는 방법.
     2.서버 인코딩 변경으로  영문으로 된 문자열이라고 해도 해당 테이블의 데이타를 입력할때에 
        문제가 없는 건지.     

     설명 부탁 드립니다. DB도 자세히는 아는게 아니라서 애를 먹고 있습니다. 
     방향 제시만이라도  좋습니다.

     그리고, 질문에 답해 주시는 분들과  검색하며 연구한 덕에  여기까지 올 수 있었습니다. 
     감사드립니다. 
         


이 글에 대한 댓글이 총 2건 있습니다.

데이타와 스키마를 분리해서 백업 받는게 좋을 거 같습니다.


그리고 스키마를 편집하여 제약조건들과 인덱스, 트리거, 펑션 등등을 스키마에서 또 별도로 분리하고

스키마 먼저 넣고

펑션 같은거 넣고

데이타 넣고

트리거 등 제약조건 넣고..

하면서 

과정을 거치면서 나오는 에러를 잡아가는게 좋을거 같네요..


한가지 더...


감소 시퀸스가 있다면 반드시 수동으로 제조정 하셔야 합니다.



근데... 이왕 새로 설치하시는거 8.3 을 하시지 어찌 8.1.3 을...

tyro님이 2008-03-05 20:51에 작성한 댓글입니다. Edit

 전 VC++ 개발자인데.리눅스도 잘모르고 psql 도 설치를 안해 봤습니다. 
만들어놓은 사람이 잇었는데 이런저런 사정으로 .....

테이블 양도 상당한데 이거 보통일 아니네요. 이후 실제로 사용하게 될 경우
큰 문제가 발생할 수 도 있을 수도 있을거 같네요 

답변 감사드립니다. 

김대헌(terisss)님이 2008-03-06 11:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7369sql외부파일에서 DDL이있는 외부파일을 다시 지정하여 실행하려면 [2]
채민석
2008-03-10
5855
7367substring 을 어떻게 사용해야할지 모르겠습니다.. 도와주세요 [2]
김재구
2008-03-07
6676
7366죄송합니다. update에서 질문있네요... [3]
임형구
2008-03-06
5551
7364DB 업그레이드하면서 데이타를 옮길려고 합니다. 인코딩 변경해서요. 고수님들 의견 부탁 드립니다. [2]
김대헌
2008-03-05
5789
7362시퀀스 문제 [1]
초짜군
2008-03-05
6173
7361배열과 FK [2]
이리
2008-03-04
5805
7360시퀀스 문제 [3]
초짜군
2008-03-01
6300
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다