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 6275 게시물 읽기
No. 6275
[급]필드 하나에 8MB가 넘는 메시지 저장방법요...
작성자
김희영(wild1018)
작성일
2005-08-19 21:58
조회수
2,313

현재 tables에 메일의 내용을 저장하려고 합니다.

메일 내용을 buffer에 받아서 그 내용을 DB에 넣으려고 하는데요...

그런데 메일 내용의 size가 71000KB정도면 너무 커서 한 필드에 안 들어가더라구요

그래서 버퍼에 넣을 때 7000KB까지만 읽어서 넣는 형식으로 구현을 했는데요...

그래도 이상하게 메일 내용의 입출력이 안됩니다.

다음과 같은 에러가 발생하고요

 

--------------------------------------------------

ERROR : syntax error at or near "ll" at character 3418

--------------------------------------------------

 

그러나 이상한 것은요....일반 text가 들어간 메일은 파일 사이즈가 8K 넘어가면 입출력에 에러가 없이 잘 입력되거든요??

 

위의 에러가 나오는 파일은 "이미지가 들어간 메일 회신"을 했을 때, 실제 그림이 들어갈 자리에 그림없이 공백처럼 보이는 그런 형식의 메일 내용이 들어가면 그렇습니다...

 

차후에 oid를 이용한 파일의 경로만 저장하는 large object를 사용할 건데요....그건 쫌 더 시일이 있어야 하는 것으로...이렇게 조언을 구합니다.

 

그럼 답변 부탁드립니다.

 

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

지금까지 8M가 넘는 자료를 넣을 생각을 해본적이 없어서 관련된 경험은 없습니다.

문서에 보면 postgresql의 한계는 다음과 같습니다.

 

Maximum size for a database? unlimited (32 TB databases exist)

Maximum size for a table? 32 TB

Maximum size for a row? 1.6TB

Maximum size for a field? 1 GB

Maximum number of rows in a table? unlimited

Maximum number of columns in a table? 250-1600 depending on column types

Maximum number of indexes on a table? unlimited

 

컬럼의 길이가 8M가 넘으면 저장을 못한다는 기록은 아직 보지 못했습니다. 메뉴얼에 의하면 varchar나 text의 경우 1G정도까지 넣을 수 있다고 하더군요.

 

그러니 8M의 문제는 pgsql 자체의 문제라기 보다는 사용하시는 개발 언어나 그 언어에 바인딩된 pgsql client library의 문제로 보입니다. 어떤 플렛폼에서 개발을 하고 계신가요?

 

>> 위의 에러가 나오는 파일은 "이미지가 들어간 메일 회신"을 했을 때, 실제 그림이 들어갈 자리에 그림없이 공백처럼 보이는 그런 형식의 메일 내용이 들어가면 그렇습니다...

 

이 부분은 잘 이해를 못하겠습니다. 제가 보기에 syntax에러이니 만큼 작은 따움표(')를 잘못 처리해줬거나 하지 않았을지요.

 

>> 차후에 oid를 이용한 파일의 경로만 저장하는 large object를 사용할 건데요....

 

pgsql이 대용량 자료를 TOAST라는 별도의 공간에 저장하기 때문에 large object는 매력이 별로 없습니다. 개인적으로 대용량 자료를 DB에 저장하는 것을 좋아하지는 않지만 꼭 저장해야 한다고 할 때라도 large object를 굳이 쓰실 필요는 없어보이네요.

 

박성철(gyumee)님이 2005-08-20 11:04에 작성한 댓글입니다.

답변 감사드립니다.

제가 박성철 님의 답글을 보고 나서 다시 한 번 생각을 해 보고 실행해 본 결과 다음과 같은 것이 원인이었습니다.

 

insert into table명(field명) VALUES('메일 내용');

 

메일 내용 부분에 "It's done."과 같이 '가 들어있게 되면, 처음 시작의 '부분부터 It'까지만이 field에 들어갈 것으로 인식이 되어 나머지 내용에 대한 삽입에 syntax error가 발생한 경우였습니다.

 

그래서 메일 내용 부분을 검색하여 '가 있을 경우 /로 변경을 하던지, '를 하나 더 삽입하는 방식으로 해결해야 한다는 사실을 알았습니다.

 

님의 답변에 감사드립니다.

 

김희영(wild1018)님이 2005-08-22 09:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6278입력한 행의 자동 증가값을 아는 방법이 있는지요? [2]
김창욱
2005-08-23
2451
6277postmaster.log를 어떻게 해야되는지 [3]
채희범
2005-08-22
1986
6276[질문]약 200개의 게시판 검색에 관해서.. [5]
가우나라
2005-08-21
2283
6275[급]필드 하나에 8MB가 넘는 메시지 저장방법요... [2]
김희영
2005-08-19
2313
6274트리거에 관한 질문 몇가지... [1]
jaejen
2005-08-19
2826
6273fedora core 4 에서 pg_hba.conf 에서 trust 말고 다른 옵션은 ? [2]
양인철
2005-08-18
2430
6272createlang로 language 인스톨 질문 [2]
장재혁
2005-08-18
2121
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다