본문 바로가기

Database

(46)
[Mariadb] 새로운 INSERT 방법(INSERT INTO SET) 우리가 익히 알고 있는 INSERT 방식은 insert into (컬럼명들) values (컬럼값들) 로 현재 모든 DBMS에서 사용되고 있다. 하지만 테이블의 컬럼이 30개정도가 넘어가면 컬럼명과 컬럼값의 매핑이 어려울 때가 존재한다. (실제 프로젝트에서 한 테이블에 컬럼개수가 200개가 넘어가는 것을 경험한 적이 있다.) 이 문제를 해결하기 위해 mariadb 에서는 update set 문법과 비슷한 insert into set 문법을 개발하고 제공한 것으로 추정된다. INSERT SET 예제 /* dummy_table 테이블에 insert into set 를 이용한 데이터삽입 쿼리 예제 */ insert into dummy_table set no = 1 , title = '제목' , memo = n..
[Postgresql/Greenplum] Order by Collate/NULLS 를 이용하여 데이터 정렬기준 변경하기 DBMS 마이그레이션을 프로젝트를 수행하면 꼭 나오는 유형이 정렬기준이 다르게 적용되는 점이다. 정렬기준이 다르게 적용되면 쿼리나 어플리케이션의 버그처럼 보여지면서 변경된 DBMS의 신뢰도가 확 낮아진다는 점이다. (그러면 예전 DB는 잘됐어요. Greenplum 또는 Postgresql 못 쓰겠네 라는 얘기를 백만번쯤 듣게 될 것이다.) 예를 들면 1. MySQL,SqlServer DBMS 에서 Greenplum 으로 DBMS를 변경하여 테이블의 데이터가 같아도 영문데이터가 먼저 나와야 하는데 한글 데이터가 먼저 표시되는 경우 2. Greenplum/Postgresql DBMS에서 order by 쿼리를 실행한 데이터와 엑셀의 정렬 기능을 사용한 데이터를 비교하는데 순서가 맞지 않아 정렬을 다시 해야하..
[Netezza] 엔터값(줄바꿈) 지우는 방법 네티자에서 엔터값(줄바꿈)을 없앨려면 REPLACE 말고 TRANSLATE 함수를 사용하여야 한다. REPLACE 함수를 사용하면 한글이 깨지는 문제가 발생하여 권장하지 않는다. -- TRANSLATE 함수사용 SELECT TRANSLATE(컬럼명, CHR(10), '') AS COLUMN_ALIAS FROM 테이블명
[Netezza] 데이터 Unload 수행시 - The update count exceeded Integer.MAX_VALUE. 에러발생 네티자 jdbc(nzjdbc.jar)를 이용하여 대용량테이블 데이터 Unload 수행시 에러발생 org.netezza.error.NzSQLException: The update count exceeded Integer.MAX_VALUE. 네티자 서버에서 nzsql 명령어를 이용하여 데이터를 unload 할때에는 에러가 발생되지 않지만 네티자 jdbc를 이용하여 대용량 데이터를 내려받을때에는 에러가 발생한다. 추측이지만 데이터를 내려받고 나서 건수를 UPDATE 하는 부분이 있는데 Integer로 되어 있어 약20억건 - Integer 최대값을 초과하면 에러가 발생되는 듯 하다. jdbc 연결파라미터에 ignoreUpdateCount=True 를 설정해 주면 에러메세지가 발생되지 않는다. NZ_SERVER..
[Greenplum] PXF 6.1.0 설치방법 PXF를 설치/사용하려면 JAVA 1.8 또는 JAVA 11이 설치되어 있어야 하고 smdw 노드를 제외한 모든 노드에 동일한 설치환경이 구성되어 있어야 한다. 해당 포스팅은 JAVA 1.8이 이미 설치된 것으로 간주하고 PXF 설치방법을 작성하였다. Greenplum을 설치하면 폴더 내 기본 pxf 가 설치되어 있는데 기본pxf는 사용하지 않고 최신버전 pxf rpm 파일을 다운받아 설치하자.(기본으로 설치되어있는 pxf는 기동이 잘 되지 않는다.) 설치환경 RedHat 7.5 Greenplum 6.12 JAVA 1.8 1. PXF RPM 설치 pxf-gp6-6.1.0-2.el7.x86_64.rpm 파일을 다운받아 /root/ 폴더에 업로드 후 진행 [root@sdw1 ~]# rpm -ivh pxf-g..
[Postgresql/Greenplum] 테이블명 길이 63Byte 제한 Postgresql 테이블명 길이는 UTF-8 DB인 경우 63Byte 까지로 제한되어 있다.(영문/숫자 1Byte, 한글 3Byte) 확인버전 Postgreql 13.1 Greenplum 6.11(Postgresql 9.4) 테이블명만 제한되어 있는줄 알았으나 모든 오브젝트의 이름이 제한되어 있는 것을 공식사이트에서 확인할 수 있다. Postgresql 제한관련 정보 - https://www.postgresql.org/docs/13/limits.html 재미있는 사실은 재컴파일을 하면 길이제한 설정값을 조정할 수가 있는 것 같다. DB 캐릭터셋 확인 -- DB 캐릭터셋 확인 select datname , datctype from pg_database where datname = 'postgres' 문제..
[Greenplum] ilike 를 이용하여 대소문자 구분없이 조회하기 환경정보 Greenplum 6.12(Postgresql 9.4 기반) 사전준비 drop table if exists public.test; create table public.test( no serial primary key , title varchar(300) not null , memo text null , create_dt timestamp default current_timestamp ) distributed by (no); insert into public.test (title) values ('abcdeFg'),('Ef'); select * from public.test; like 구문을 이용하여 '%ef%' 를 조회하면 데이터가 조회되지 않는다. 하지만 ilike를 이용하면 데이터가 조회되는..
윈도우에서 Mariadb 10.6.3 64bit 버전 설치하는 방법 Mariadb 최신버전인 10.6.3 64bit 를 윈도우 환경에서 설치해보자. (설치일 : 2021년 8월 3일) 설치환경 윈도우 10 Pro 64bit Mariadb 10.6.3 1. 설치파일 다운로드 https://downloads.mariadb.org/ 2. 설치진행 root 암호를 입력하고 root user가 외부에서 접속되게끔 체크, 기본 캐릭터셋을 UTF8 사용하게끔 체크하여 설치하자. 설정이 완료되어서 Install 버튼을 클릭하면 mariadb가 설치된다. 설치가 완료되었다. 3. Mariadb 접속 설치가 완료되었으면 기본적으로 설치되는 하이디SQL를 이용하여 root 유저로 접속해보자. select version() 쿼리를 실행하면 설치된 mariadb 10.6.3 버전이 정상적으로 ..