[PostgreSQL] string aggregation

February 8, 2012 Leave a comment

복수의 행 자료를 하나의 문자열로 변환하여 파일로 내보내는 경우 아래와 같은 방식으로 한다.

copy
(
select appno, string_agg(appno_sim, ',')
from sim_pat_54
group by appno
) to 'D:\test\string_agg_54.txt';

[PostgreSQL] Unicode normalization

February 2, 2012 Leave a comment

postgresql-plpython 설치

# yum install postgresql-plpython

쿼리 실행

CREATE LANGUAGE plpythonu;

CREATE OR REPLACE FUNCTION simplify (str text)
RETURNS text
AS $$
import unicodedata

s = unicodedata.normalize('NFKD', str.decode('UTF-8'))
s = ''.join(c for c in s if unicodedata.combining(c) == 0)
return s.encode('UTF-8')
$$ LANGUAGE plpythonu;

TEST

① select simplify(‘特許第2556636号(P2556636)’);

② select simplify(‘Français va à Paris, () {} [] µ @ º Ångstrøm
Phiat-im hû-hō sī phiat tī 1-ê ki-chhó· jī-bó bīn-téng ê hû-hō. Siōng
phó·-phiàn ê kong-lêng sī kái-piàn ki-chhó· jī-bó ê hoat-im.’);

출력결과

① “特許第2556636号(P2556636)”

② “Francais va a Paris, () {} [] μ @ o Angstrøm
Phiat-im hu-ho si phiat ti 1-e ki-chho· ji-bo bin-teng e hu-ho. Siong
pho·-phian e kong-leng si kai-pian ki-chho· ji-bo e hoat-im.”

[참고]
http://wiki.postgresql.org/wiki/Strip_accents_from_strings
http://wiki.postgresql.org/wiki/Strip_accents_from_strings,_and_output_in_lowercase

< 주의할 점! >

컬럼명을 인자로 전달할 때 where 절이 있으면 문제가 없으나, 그렇지 않은 경우 오류가 발생된다. 원인파악이 필요하다.

문제 없는 경우
select uninorm('문자열');
select uninorm(citn_no_original) from t_citn where citn_no_original is not null;

오류발생되는 경우
select uninorm(citn_no_original) from t_citn;
select uninorm(citn_no_original) from t_citn limit 100;

[PostgreSQL] 연번 필드 생성

January 13, 2012 Leave a comment

0000 – 0100 문자열 생성

with recursive foo
AS
(
SELECT 0 seq
UNION ALL
SELECT seq + 1 FROM foo
WHERE seq + 1 <= 100
)
select lpad(cast (seq as varchar(8)), 4, ‘0’) from foo;

Vim 주요 사용법

January 7, 2012 Leave a comment

visual mode
v
Ctrl+v (컬럼 단위). ※ gvim 에서는 Ctrl+q 이며, 일괄 insert, append 시 대문자 “I”, “A” 사용.

SELinux

January 7, 2012 Leave a comment

기능끄기

# vi /etc/sysconfig/selinux
SELINUX=enforcing –>  SELINUX=disabled
# reboot

wget

January 6, 2012 Leave a comment

wget -x -nH –cut-dirs=1 -N -c -i url.txt

[PostgreSQL] dblink

December 22, 2011 Leave a comment

dblink_connect

dblink_connect (text connstr) returns text
dblink_connect (text conname, text connstr) returns text

(example 1)
SELECT dblink_connect (‘connect_name’, ‘hostaddr=10.3.4.13 port=5432 dbname=db_kr_patent user=postgres password=xxxx’);

(example 2)
CREATE TABLE t_publish AS
SELECT id_kipi, publn_nat_cd_std, dnum_kipi, dnum_jgr, doc_kind_std, doc_publn_date
FROM dblink(‘jpnips_connect’,’select id_kipi, publn_nat_cd_std, dnum_kipi, dnum_jgr, doc_kind_std, doc_publn_date from t_publish’)
AS t1 (  id_kipi character varying(32),
publn_nat_cd_std character varying(8),
dnum_kipi character varying(32),
dnum_jgr character varying(32),
doc_kind_std character varying(8),
doc_publn_date character varying(16)
);

VirtualBox Guest Additions on Fedora 16

December 16, 2011 Leave a comment

디스플레이 설정
– 비디오 메모리 : 128 MB
– 3D 가속 : Enable

Fedora 16 설치

사전작업
# yum update
# yum install kernel-devel kernel-headers dkms gcc gcc-c++

VM 재부팅

Guest Additions 설치
– VM 창의 장치 메뉴에서 게스트 확장 설치 실행 (CD/DVD 장치가 마운트되어 있어야 함)
– /media 디렉토리 하위의 VBOXADDITIONS 디렉토리로 이동
– # ./VBoxLinuxAdditions.run
– (GNOME 3 쉘 사용하려면) # restorecon -R -v /opt

VM 재부팅 (완료)

postgreSQL on Fedora 16 (설치 및 환경설정)

December 14, 2011 Leave a comment

서버설치
# yum install postgresql-sever

pgadmin 설치
# yum install pgadmin3

데이터베이스 생성
# postgresql-setup initdb
(Fedora 16부터 명령어 변경됨. 이전에는 “# service postgresql initdb”)

서비스 시작
# service postgresql start

postgres 계정으로 접속 및 패스워드 설정
# su – postgres
-bash-4.2$ psql postgres
psql (9.1.2)
Type “help” for help.

postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD ‘사용할 패스워드 문자열’;
postgres=# \q
-bash-4.2$ exit

접근방식 (ident -> password) 및 메모리 사용 설정 변경
# vi /var/lib/pgsql/data/pg_hba.conf
——————————————————————————————-
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# “local” is for Unix domain socket connections only
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
host    all             all             0.0.0.0/0                  password
# IPv6 local connections:
host    all             all             ::1/128                 password
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident
——————————————————————————————-

# vi /var/lib/pgsql/data/postgresql.conf
——————————————————————————————-
listen_addresses = ‘*’
port = 5432
max_connections = 100
shared_buffers = 4096MB (이와 같이 설정했을 때 postgresql 서비스가 시작되지 못하는 문제가 발생된다. 원래대로 32MB로 설정할 것)
——————————————————————————————-

서비스 재시작
# service postgresql restart

pgadmin3로 접속 및 작업
# pgadmin3

vim 설치 및 환경설정

November 30, 2011 Leave a comment

버전확인 및 설치

  1. # rpm -qa | grep vim
  2. -> vim-minimal-7.2.446-2.fc14.i686 (최소버전만 설치되어 있는 경우)
  3. (vim 재설치) # yum install vim
  4. 재설치 후 vi 명령어를 실행하면 small 버전이, vim 명령어를 실행시키면 huge 버전이 실행.
  5. $Home/.bashrc 에 alias vi=”vim” 추가하고 재부팅하면 vi 명령어로 huge 버전 실행

사용자 환경설정

  1. $ vi ~/.vimrc
  2. 설정내용 작성
    set number
    set cindent
    set shiftwidth=4
    set softtabstop=4
    set fileendocing=utf-8
    set fileencodings=ucs-bom,utf-8,cp949,cp932,euc-jp,shift-jis,latin1