목록월급루팡 (9)
우주코딩
파티셔닝 적용과 자동생성을 도입해야하는 상황 열심히 구글링한 결과 pgsql 의 10언더 버전에선 파티셔닝이 아닌 상속만 있어서 상속으로 파티셔닝을 처리했다. 10 이상 버전에서 파티셔닝의 기능을 사용할 수 있다. 문제는 파티셔닝을 도입하면 해당 조건에 맞지 않는 데이터의 경우 바로 에러를 던지기 때문에 미리 생성해 두지 않으면 안된다. 10년치를 미리 만들어 놓는다고 해도 10년 뒤의 누군가는 유지보수를 해야하는 것... 그래서 자동생성을 하려고 한다. 첫번째로 pg_cron 이라는 포스트그레스큐엘 extension을 사용하는 것이다. 이건 타 블로그에 잘 기술되어 있으니 그것을 참조.. 문제는 pg_cron을 설치하는 방법이 소스를 컴파일, yum install이 있는데 현재 패키징 구조상 소스를 컴..
오류 코드: ORA-01898 오류 코드: ORA-01898 설명: 정밀도 지정자가 너무 많습니다 원인: 날짜를 자르거나 반올림하는 동안 날짜 형식 그림에서 추가 데이터가 발견되었습니다. 조치: 날짜 형식 그림의 구문을 확인하고 다시 시도하십시오. 예제 order_date 컬럼 (DATE 타입) 을 between을 써서 조건을 줄 때 where trunc(order_date, 'yyyymmdd') between #{fromDate}(문자열 'yyyymmdd') and #{toDate}(문자열 'yyyymmdd') 이렇게만 걸 경우 나오는 에러 비교를 하려면 똑같은 데이터 형으로 변환한 뒤에 조건을 걸어야한다. where trunc(to_char(order_date, 'yyyymmdd')) between ..
padStart 를 사용해서 웹스퀘어 그리드 제어하기 리퀘스트 메인화면의 그리드가 조회조건에 따라 가변되어 나오도록 수정해주세요. 만약에 조회 기간이 3월부터 5월까지라면 3월부터 5월까지만 나오고 다른 월은 그리드가 나오지 않도록 var month = ""; var from = Number(시작월.getValue().substring(4,6)); var to = Number(종료월.getValue().substring(4,6)); for(var i = 1; i to){ grid.setColumnVisible("a"+month, false); grid.setColumnVisible("b"+month, false); grid.setColumnVisible("c"+month, false); grid.setC..
내가 쓰는 플젝 툴 형상관리 - svn 빌드 툴 - maven 앞단 - websquare 개발도구 - 이클립스 이클립스에서 import -> Checkout Projects from SVN SVN 주소 입력 -> 임포트할 프로젝트 선택 -> 체크아웃 체크아웃 한 후 프로젝트 프로퍼티스 혹은 빌드 패스 클릭 -> 라이브러리에서 JRE 버전 맞는지 확인 -> Add Library -> 웹스퀘어 혹은 Web App 라이브러리 추가 -> 프로퍼티 검색창에 'assembly' 검색 Define packaging structure for this Java EE Web Application project. 'Web Deployment Assembly' 들어간다 -> Add 클릭해서 Maven Dependencies ..
오라클 contains sql 문을 더 빠르게 하는 방법 보통 sql문에서 특정 문자를 포함하는 sql 을 짤 때 LIKE 를 쓰는 것이 보편적이다. 하지만, 이 like SQL문에서 검색문자열 앞에 % 가 있는 경우에는 인덱스를 타지 않거나, Index Fast Full Scan 을 하게 된다. 즉, 인덱스를 통째로 읽어서 찾는 것이다. Tabel Full Scan 과 비슷하여 많이 느리다. 이런 경우 빠르게 할 방법이 바로 'Oracle Text' 이다. Intermedia Textm , Domain Index, Text Index 모두 같은 말이다. 이 기능은 내부적으로 키워드 딕셔너리를 구성하여 테이블에서 검색해오기 때문에 매우 빠르다. select * from 테이블명 where 컬럼명 like..
SELECT MEMBER_NO ,NAME ,GENDER ,ADDR ,ACCOUNT ,AGE FROM MEMBER WHERE 1=1 AND ADDR LIKE '%' || #{서울} || '%' ORDER BY 2,4,6 ORDER BY 2,4,6의 의미는 무엇일까 이런 쿼리가 있다고 할 때 ORDER BY 2,4,6의 의미는 해당 쿼리의 2,4,6번째 컬럼을 순서로 정렬을 한다는 뜻이다. 위의 쿼리를 실행하면 서울에 사는 MEMBER 를 NAME, ADDR, AGE 순을 기준으로 정렬한 데이터를 보여줄 것이다. 물론 ORDER BY 뒤의 숫자는 사용자가 지정할 수 있다. 하지만 SELECT * 을 할 경우 혹은 또 다른 사용자가 테이블에 관한 정보를 알 지 못할 경우 컬럼의 수로 정렬을 하는 방식은 좋지 ..
SELECT CUSTOMER_RELATION ,RELATION_TYPE ,CUSTOMER_ID ,CUSTOMER_NUMBER ,CUSTOMER_NAME ,DEST_ADDR FROM CUSTOMER_RELATION WHERE EXISTS ( SELECT 'X' FROM CUSTOMER WHERE CUSTOEMR_ID = #{CUSTOMER_ID) AND CUSTOMER_RELATION_YN = 'Y') 서브 쿼리에서 이 SELEC 'X' 의 의미는 무엇인가 EXISTS 의 경우 일반적인 서브쿼리 수행순서와 다르게 메인쿼리부터 작업이 수행된다 비교적 데이터가 적은 테이블을 먼저 읽어 수행시간이 빨라질 수 있다 EXISTS 한 테이블이 다른 테이블과 외래키(FK)와 같은 관계가 있을 때 유용하다. EXISTS..
동적쿼리에서 if문을 사용하여 조건을 유동적으로 바꾸고 싶을때 WHERE 1=1 으로 첫 조건을 선언 후 AND 조건을 유동으로 바꾸어도 WHERE이라는 구문은 신경쓰지 않아도 된다. SELECT SEQ_ZIP_CODE ,ZIP_CODE ,ADDR ,MOD_DATE ,SIDO, GUNGU , DONG, RI, DOSEO, BUNJI FROM 우편번호테이블 WHERE 1=1 AND DEL_DATE IS NULL AND (ADDR LIKE '검색어' OR ROAD_NM LIKE '검색어') 조건문을 쓰기 편하다. 위의 쿼리에서는 조건이 짧고 단순하지만 조건문이 길어졌을 때 AND 부분만 주석처리를 하고 디버깅을 해볼 수 있기 때문에 굉장히 편하다! 대부분 SELECT 문에서 자주 사용하는 듯하다.