[PostgreSQL] string aggregation
복수의 행 자료를 하나의 문자열로 변환하여 파일로 내보내는 경우 아래와 같은 방식으로 한다.
copy
(
select appno, string_agg(appno_sim, ',')
from sim_pat_54
group by appno
) to 'D:\test\string_agg_54.txt';
[PostgreSQL] Unicode normalization
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] 연번 필드 생성
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 주요 사용법
visual mode
v
Ctrl+v (컬럼 단위). ※ gvim 에서는 Ctrl+q 이며, 일괄 insert, append 시 대문자 “I”, “A” 사용.
SELinux
기능끄기
# vi /etc/sysconfig/selinux
SELINUX=enforcing –> SELINUX=disabled
# reboot
wget
wget -x -nH –cut-dirs=1 -N -c -i url.txt
[PostgreSQL] dblink
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
디스플레이 설정
– 비디오 메모리 : 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 (설치 및 환경설정)
서버설치
# 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 설치 및 환경설정
버전확인 및 설치
- # rpm -qa | grep vim
- -> vim-minimal-7.2.446-2.fc14.i686 (최소버전만 설치되어 있는 경우)
- (vim 재설치) # yum install vim
- 재설치 후 vi 명령어를 실행하면 small 버전이, vim 명령어를 실행시키면 huge 버전이 실행.
- $Home/.bashrc 에 alias vi=”vim” 추가하고 재부팅하면 vi 명령어로 huge 버전 실행
사용자 환경설정
- $ vi ~/.vimrc
- 설정내용 작성
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
Recent Comments