목록오라클 (3)
5시간코딩
1. 기존 테이블명을 다른 이름으로 변경 1) DROP TABLE emp PURGE; 2) ALTER TABLE emp RENAME TO emp_tmp; 2. CTAS 로 테이블 복제( 컬럼명을 명시적으로 적어줘서 순서를 원하는 대로 바꿔준다) CREATE TABLE emp AS (SELECT A.id, A.name, A.deptcd, B.deptname FROM emp_tmp A, dept A WHERE A.deptcd = B.deptcd); * 같은 방법으로 테이블에 컬럼을 추가해서 다른 테이블에 ctas 할 때 컬럼명을 잘 지정해줘서 하는 방법을 응용할 수 있다.
평일엔 하나의 코드에 어쩔땐 VALUE1, VALUE2, VALUE3이 들어가고 주말엔 VALUE1, VALUE4, VALUE5 가 들어가고 어쩔땐 VALUE1, VALUE2, VALUE3, VALUE4, VALUE5 다 들어가고 추후에 VALUE6이 추가될 수도 있고 VALUE3을 안쓸 수도 있고 이렇게 가변적일 때, 할 수 있는 방법들이다. 1. VALUE 하나의 컬럼으로 하여 아래 로우를 VALUE1, VALUE2, VALUE3 ... 으로 추가하는 방법. 아마 현업에서 많이 쓰는 방법이 아닐까싶다. ROW수가 배가 되어 많아 진다는 단점이 있다. 2. TABLE 2개로 유지하는 방법 TABLE1 : 값이 들어가는 테이블, TABLE2 : 컬럼을 매핑하는 테이블로 해서... TABLE2에 TABLE..
현재 글쓴 날짜는 2019년이다. 2019년 데이터를 돌릴 때는 아무 이상없이 돌아가던 쿼리가 2013년~2019년으로 범위를 넓게 해서 돌리니까 없던 에러가 생겼다. 심지어 오라클에서 에러가 발생한 부분이라고 표시해준 부분도 완전 이상한 곳이더라... 원인은... 사용하던 테이블 중 가장 컸던 테이블이 2000만row짜리가 있었는데, 사용했던 컬럼 중에 문자형식으로 된 날짜가 있었는데, 그 중 '20140631' 이라는 row가 6개 정도 있었다. 6월달은 30까지 밖에 없다... 날짜로 바꾸니 에러가 날 수 밖에 없다. 날짜는 자동으로 박힐텐데 왜 이런 이상한 날짜가 들어갔는지는 알 수 없었다. 뭐 어쨋든.. 타부서에 수정요청했지만, 안된다는 반응이어서 어쩔 수 없이 하드코딩으로 CASE WHEN d..