통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
WPF & Silverlight 포럼마을입니다.
  마을등급 WPF & Silverlight   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 서학수 주민 728 since 2008-07-17
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
[마을 게시판]
WPF 강좌
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 개발자 고충상담
 대용량 텍스트를 DB에 어떻게 저장하나요? 2019-11-06 오전 9:10:11
mine 번호: 25658 추천:0  / 읽음:2,433

안녕하세요

 

제가 지금 하고 있는 업무는

 

길이가 몇만 글자 이상되는 게시판의 글들을

 

분석하는 것입니다

 

게시판의 글들은 자유 작성 형식이구요

몇만 글자 이상으로 깁니다

 

이런 글들이 수천만개 이상 있습니다

 

이 경우,

 

게시글 접수 번호, 게시글 제목, 게시글 본문

 

이렇게 해서

 

PostgreSQL DB에 테이블 형태로 저장하고 싶은데요

 

문제는 게시글 본문이 개행 문자들이 들어가는데요

 

이 게시글 본문을 텍스트 파일에 저장하면

 

개행 문자 때문에 copy 쿼리 명령으로 DB에 쓰지 못하네요

 

그래서 게시글 본문의 개행문자 삭제를 해도

 

게시글 하나가 너무 길어서 copy 쿼리 명령으로 text file 형태로

 

DB로 입력하려 해도, 게시글이 너무 길어서 한개의 row가 여러개의 줄으로

나뉘어 있다고

 

DB로 쓰지 못합니다

 

이런 경우, 어떻게 DB의 테이블로 쓰면 될까요

 

고수님들의 조언을 부탁 드립니다

 

감사합니다~

[코멘트] 좋음
2019-11-06 09:15
SkyNET
캐리지 리턴은 REPLACE를 할 수도 있고... 개행문자 처리로 검색해보시면 많이 나옵니다.
단순 텍스트고 속도 문제가 있다면 저라면 텍스트 자체를 압축해서 넣어버릴 수도 (이건 좀 글쳐 ㅋ)
저장 취소
[코멘트] 좋음
2019-11-06 09:26
mine
SkyNET님

말씀 감사합니다^^

말씀하신데로 압축해서 DB로 넣거나

아니면, 텍스트를 각각 file로 외부에 저장하고 그 file의 경로명을 DB에 저장하는 방법이 가능할까요?
저장 취소
[코멘트] 좋음
2019-11-06 09:43
이이이이이이
https://cafe.naver.com/javachobostudy/101631
여기 참고해 보세요.. 여기에 도움될만한게 없으면...
구박사(구글)에게 문의해 보세요...
저장 취소
[코멘트] 좋음
2019-11-06 09:53
분당에집갖고싶어
위에 REPLACE 답변 주셨네요.

각각 파일로 관리가 힘들죠... ㅋㅋ DB 나온 이유가 있는데요..
저장 취소
[코멘트] 좋음
2019-11-06 10:14
mine
이이이이이이 님

위에 카페글은 카페회원만 볼 수 있게 되어 있네요
저장 취소
[코멘트] 좋음
2019-11-06 10:15
 crowback__  crowback__님께 메시지 보내기crowback__님을 내 주소록에 추가합니다.crowback__님의 개인게시판 가기 
원문을 변경하지 않고, 그냥 bind? (prepare?) 하시면 될꺼 같은데요..

문장을 변경하려면 오버헤드도 생기고, 잘못 바뀔수도 있고, 다시 쿼리문을 포맷해야하고..
특수 문자등에 의한 쿼리 오류도 고려해야하고.. 기타 등등등..
저장 취소
[코멘트] 좋음
2019-11-06 11:27
mine
crowback__ 님
훌륭한 조언 감사 드립니다

bind 변수는 pl/sql 형태로 써야 하는건가요?
혹시 오라클에서만 쓸 수 있는건지요?
저장 취소
[코멘트] 좋음
2019-11-06 11:57
 allinux  allinux님께 메시지 보내기allinux님을 내 주소록에 추가합니다.allinux님의 개인게시판 가기 
저장하는 데이터의 용도 자체를 알 수 없으니 참고만 하시기 바랍니다.

만약 본문의 데이터를 조회하는 상황이 발생할 것이라면 rdbms 에 맞지 않습니다.

elasticsearch 같은 검색엔진을 활용하던지 도큐먼트 DB를 활용하는 편이 맞다고 생각됩니다.

logstash 로 게시판에서 수집하고 elasticsearch 에 인덱싱하는 것을 추천드리고 싶네요.
저장 취소
[코멘트] 좋음
2019-11-06 15:10
 crowback__  crowback__님께 메시지 보내기crowback__님을 내 주소록에 추가합니다.crowback__님의 개인게시판 가기 
사용하는 언어(Programming Language) 를 말씀하지 않으셔서 이거다라고 찍어 말할 수는 없지만..
거의 모든 언어에서 바인딩 형식을 지원합니다.

PostgreSQL 은 이미 오래전 부터 사용되어온 DBMS 이기 때문에 상당히 방대한 인터페이스를 지원하거든요.
PL/SQL 로도 구현할 수 있구요, 보통 DB 라이브러리 ODBC나 언어별 자체 라이브러리를 사용합니다.

스크립트로 구현하는 경우는 먼저 PREPARE 형태의 구문을 선언하고
CURSOR에 읽어온 항목을 담아 루프를 돌면서 지정된 형태로 EXECUTE 하는 형식을 사용합니다.
저장 취소
[코멘트] 좋음
2019-11-06 16:28
ak
게시판이라고 했으니 크롤링으로 긁어서 db 넣음되고..
db에 들어간 데이터 분석은 분석가 맘이고...
저장 취소
[코멘트] 좋음
2019-11-07 01:35
mine
댓글 주신 분들께 감사 드립니다
제가 내일 출근해서 말씀하신데로 해 보겠습니다^^
좋은 밤 되십시오~
저장 취소
[코멘트] 좋음
2019-11-12 11:02
아발란체
PHP에서 DB에 넣기 전에 개행 문자 등 필터링 하는 함수가 있습니다.
JAVA 경우는 Spring(or 전자정부프레임워크)에서 VO패턴에서 보통 필터링을 하여 입력되도록 합니다.

그리고.. 길이가 무진장 기네요..
OLTP 환경이기 때문에 저라면 DB 속성 저장하되 1:N으로 구성하겠습니다.
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.