반응형
데이터를 포함하는 동안 열 유형을 숫자에서 varchar2로 변경하는 Oracle SQL
Oracle 11g에 데이터가 포함된 테이블이 있는데 Oracle SQL Plus를 사용하여 다음 작업을 수행해야 합니다.
대상: 열 유형 변경TEST1
테이블에UDA1
부터number
로.varchar2
.
제안된 방법:
- 백업 테이블
- 열을 null로 설정합니다.
- 데이터 유형 변경
- 가치를 회복합니다.
다음은 작동하지 않았습니다.
create table temp_uda1 AS (select * from UDA1);
update UDA1 set TEST1 = null;
commit;
alter table UDA1 modify TEST1 varchar2(3);
insert into UDA1(TEST1)
select cast(TEST1 as varchar2(3)) from temp_uda1;
commit;
(질서 유지를 위해) 인덱스와 관련이 있는 거죠?
create table temp_uda1 (test1 integer);
insert into temp_uda1 values (1);
alter table temp_uda1 add (test1_new varchar2(3));
update temp_uda1
set test1_new = to_char(test1);
alter table temp_uda1 drop column test1 cascade constraints;
alter table temp_uda1 rename column test1_new to test1;
열에 인덱스가 있으면 다시 만들어야 합니다.
이전 열에 999보다 큰 숫자가 있으면 업데이트가 실패합니다.만약 그렇다면, 당신은 다음의 최대값을 조정할 필요가 있습니다.varchar
기둥.
새 열을 varchar2로 추가하고, 이 열에 데이터를 복사하고, 이전 열을 삭제하고, 새 열 이름을 실제 열 이름으로 변경합니다.
ALTER TABLE UDA1
ADD (TEST1_temp VARCHAR2(16));
update UDA1 set TEST1_temp = TEST1;
ALTER TABLE UDA1 DROP COLUMN TEST1;
ALTER TABLE UDA1
RENAME COLUMN TEST1_temp TO TEST1;
Oracle 패키지 보기DBMS_REDEFINE
운이 좋으면 필요한 경우 다운타임 없이 온라인으로 작업을 수행할 수 있습니다.그렇지 않으면 다음을 수행할 수 있습니다.
- 새로 추가
VARCHAR2
기둥. - 사용하다
update
베끼기 위해NUMBER
안으로VARCHAR2
- 떨어지다
NUMBER
기둥. - 이름 바꾸기
VARCHAR2
기둥.
여기 있습니다. 이 솔루션은 기존의 NOT NULL 또는 기본 키 제약 조건에 영향을 주지 않았습니다.Primary 키의 유형을 Number에서 VARCHAR2(3)로 변경합니다. 여기 예제 표 직원의 단계가 있습니다.
- 테이블 및 인덱스 백업, 제약 조건 생성 테이블 employee_bkp
create table employee_bkp as select * from employee
commit;
- 표를 잘라내어 비웁니다.
truncate table employee
- 테이블을 변경하여 유형 변경
ALTER TABLE employee MODIFY employee_id varchar2(30);
- 백업 테이블에서 데이터 다시 복사
insert into employee (select * from employee_bkp)
commit;
- 확인
언급URL : https://stackoverflow.com/questions/18978246/oracle-sql-to-change-column-type-from-number-to-varchar2-while-it-contains-data
반응형
'programing' 카테고리의 다른 글
Intellij IDEA에서 인메모리 h2 데이터베이스에 액세스하는 방법 (0) | 2023.07.20 |
---|---|
테이블이 돌연변이 중이므로 트리거/기능이 이를 보지 못할 수 있습니다(평균 기울기가 2.5 미만으로 떨어지는 것을 방지). (0) | 2023.07.20 |
MySQL 및 Oracle로 최대 절전 모드 자동 키 생성 (0) | 2023.07.20 |
"excel package"로 색상 또는 배경을 설정하는 방법 (0) | 2023.07.20 |
파이썬에서 "if someobj == 없음:"보다 "if someobj:"가 더 나은 이유는 무엇입니까? (0) | 2023.07.20 |