안타깝게도 직접적인 방법은 없습니다.
alter table 명령어에도 field 이름을 rename 하는 명령어까지는 지원되는데 가장 중요한 것 중의 하나인 field의 type 변경 명령어는 없습니다. 그리고 field 를 지우는 명령어도 없지요. 편법은 두가지가 있습니다.
1. 새로운 테이블을 만든후 insert ... select ... 구문을 이용하는 법
create table t1 (a char(10));
create table t2 (a char(12));
insert into t2 select * from t1;
이해가 갈것으로 생각됩니다.
2. dump 받은 후 스키마를 고쳐서 다시 restore 하는 방법
pg_dump /t t1 db_name >t1.dmp
그리고 t1 테이블을 drop 시킵니다.
다음으로 vi t1.dmp 하시면 제일 상부에 t1 테이블을 구조를 볼수 있을 것입니다.
그곳을 수정 후에 psql db_name /e < t1.dmp 하시면 수정된 테이블대로 입력이 가능할 것입니다. 도움이 되셨길 바랍니다.
::정기태 님께서 쓰시길::
> 예를 들어서요..
>
> mysql 에서 jkt 라는 table안에 userid 라는 filed 가 있다고 해요..그런데 이 userid 의 형태는 varch
> ar(10) 이라고 하다면. 근데 제가 실수해서 varchar(12) 로 바꾸고 싶어요..
>
> 그럼 alter " table jkt change userid userid varchar(12); " 이렇게 하면 바뀌잖아요...
>
> postgres 에서는 어떻게 하나요?
>
> 솔직히 저도 mysql 이 좋지만, postgres를 써야 하는 상황이라서 그럽니다.부디 아시면 답변 부탁드리
> 겠습니다.
>
> 편법이라도 좋습니다..답변부탁드리겠습니다.
>
> 읽으시는 분에게 늘 행운이 있으시기 바랍니다.
|