database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6731 게시물 읽기
No. 6731
유니코드 등에 대한 질문입니다.
작성자
김종화(zepinos)
작성일
2006-06-09 14:09
조회수
8,017

PostgreSQL 을 아주 오랫만에, 약간은 독특하게 이용하게 되어서 질문을 드리려고 글을 올립니다.

 

일단 설치는 FreeBSD 6.1R + PostgreSQL 8.1.4 인 상태입니다.

패키지로 깔았기 때문에 별다른 설정은 없고, 관리자계정으로 pgsql 이 자동 생성되어 있어서 psql -U pgsql -d postres 로 접속하여 pgsql 의 패스워드만 변경한 다음 EMS SQL Manager 2005 lite for PostgreSQL 로 접속한 다음 zepinos 라는 사용자를 생성하였습니다. 그리고 모든 권한을 주었습니다.

 

그런데, 제가 주로 사용할 환경은 유니코드(UTF-8)와 Java(JDBC)입니다.

 

먼저 궁금한 것은, 패키지로 설치하고 FreeBSD 의 스크립트를 그냥 이용한 관계로 initdb 시 인코딩을 별다르게 설정을 안했습니다. 그래서 서버 인코딩이 SQL_ASCII 인 상태입니다.

psql 로 postgres DB 에 접속한 다음 \encoding 을 한 결과입니다.

이런 식으로 되어 있더라도 zepinos 라는 계정을 위한 신규 DB 인 testDB 생성시 enconding 을 UTF-8 로 해서 생성하면 아무런 상관이 없을까요?

 

그리고 EMS SQL Manager 2005 lite for PostgreSQL 에서 DB 연결 시도를 할 때 클라이언트 인코딩을 설정하는 부분이 있는데 아무런 설정을 안해줘도 되나요? 아니면 UHC 라는 인코딩으로 접속을 해야하나요? UTF-8 은 보이지 않더군요.

 

마지막으로, Java 에서 JDBC 로 연결하여 작업을 할 일이 많은데 접속을 어떻게 해야하는지 궁금합니다. 다른게 아니라...DB-테이블 스페이스-스키마-테이블의 관계 때문입니다.

보통 연결 정보 구성시 IP Address 와 Port 그리고 DB 명을 적어주고, 접속이 되면 select 등을 이용해서 바로 table 등에 질의를 요청하는데, 스키마라는 존재가 도대체 어떤 건지 의문이 들어서입니다. 연결할 때 특정 스키마를 지정하여 연결을 하는 것인지, 아니면 DB 에 접속을 한 뒤에 스키마 별 구분 없이 그냥 모든 table 에 접근이 가능한 것인지 잘 모르겠습니다.

 

조언 부탁드리겠습니다.

 

이 글에 대한 댓글이 총 5건 있습니다.

DB 생성 후 show server_encoding; 했을 때 utf8 이나 unicode 나오면 DB가 유니코드로 잘 생성된게 맞습니다.

윈도에서 EMS 로 연결하실 때는 클라이언트 인코딩을 uhc 하셔야 잘 나옵니다.

 

schema 는 오라클의 네임스페이스와 비슷하다고 보시면 됩니다. 기본적으로 public 이라는 스키마가 생성되며 사용자별로 스키마를 줄 수도 있고 사용하면서 논리적인 구분으로 스키마를 생성할 수도 있습니다. 테이블들의 그룹핑이라고 생각하시면 쉬운데 이 개념이 맞지는 않습니다.

신기배(소타)님이 2006-06-09 14:26에 작성한 댓글입니다.

답변 감사드립니다. 많은 도움이 되었습니다.

 

정작 테스트 결과 EMS SQL Manager 에서 유니코드 한자가 ? 로 되어 버리는군요. 다른 툴을 이용해봐야 할 것 같습니다.

 

그리고...죄송하지만, 스키마에 대한 자세한 설명을 부탁드려도 될가요? 제가 현재 public 이라는 스키마를 지우고 test 라는 스키마를 만들고 test_tbl 이라는 테이블을 만들었습니다. 그리고 select * from test_tbl; 이라고 하니 test_tbl 을 찾지 못한다고 나오네요(ERROR: relation "test_tbl" does not exist).

 

이 개념만 알아도 이해가 쉬울 것 같습니다.

 

조언 부탁드립니다.

김종화(zepinos)님이 2006-06-09 14:33에 작성한 댓글입니다.

select * from test.test_tbl;

 

또는 set search_path=test; (해당 세션만 test를 기본 검색 스키마로 사용)

또는 alter database DB이름 set search_path=path; (앞으로 모든 세션에 대해 test를 기본 검색 스키마로 사용)

 

public 는 안지우시는게 나을텐데요;;

신기배(소타)님이 2006-06-09 14:45에 작성한 댓글입니다.

답변 감사드립니다.

 

invalid UTF-8 byte sequence detected

 

이런 에러가 뜨던데 아무래도 public 이 아닌 다른 스키마를 써서 그런가보네요.

 

다시 테이블을 만들고 public 스키마에 테이블 만들어서 쓰니 잘 되네요. ^^

김종화(zepinos)님이 2006-06-09 14:48에 작성한 댓글입니다.

그 에러는 인코딩이 잘못된 문자가 발견되어서 그렇습니다~

pgsql은 다른 DBMS에 비해 엄격해서 잘못된 문자 시퀀스를 대충 구겨넣거나 하지 않걸랑요

서버 인코딩이 unicode 이지만 사용하는 환경은 대부분 윈도우이니 사용하실 때 터미널이 인코딩 전환을 지원하지 않으면 \encoding uhc 이렇게 해서 클라이언트 인코딩을 uhc로 바꾸시면 자동으로 서버, 클라이언트 간 인코딩 컨버전이 일어납니다~

신기배(소타)님이 2006-06-09 17:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6734같은 검색결과가 두개씩 [2]
버들
2006-06-10
2965
6733select 시에 검색조건이 없을경우 문제 입니다 [6]
권용재
2006-06-09
3418
6732php에서 pgpool 사용에 대한 질문 [1]
vortex
2006-06-09
3028
6731유니코드 등에 대한 질문입니다. [5]
김종화
2006-06-09
8017
6729SP 호출하여 select 된 결과값받기 [3]
권용재
2006-06-09
3531
6728윈도우2000에서 postmaster 실행시 오류.. [1]
김경준
2006-06-07
3200
6727postgresql update
Andrew
2006-06-07
3204
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다