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 6638 게시물 읽기
No. 6638
insert 인데 update로 가능하게??
작성자
MIN
작성일
2006-04-24 13:51
조회수
3,006

포스트그레스에 데이터를 매일 insert,update 해야 하는데 데이터 들은 파일로 옵니다. 매일..
요기서 궁금한점이 옛날에 어디서 들은게 있는데 오라클 이었습니다만.. insert 하면서 pk값이 중복이 되면 update 로 변환되면서 그 값으로 update 되서 들어갑니다.

이게 포스트크레스로 가능할까여? 파일 읽어서 쿼리문 날리는건 php로 코딩할 생각입니다. 아님 그냥 수동적으로 값 비교해서 알아서 insert, update 문 만들어서 코딩해야 하나.. 이렇게 하자니 테이블 수가 장난 아닙니다. 각 테이블 마다 pk필드명도 다 틀리고..
혹 그냥 insert 시켜서 pg에서 에러문 나는걸로 pg 대상 테이블 pk필드알아서 체크 되서 그 값 비교해서 update 로 변환 시킬수 있는지..

혹 아시는분.. 답변 주시면 감사..

좋은 하루 되시길.. 황사 조심하시고요..

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

음.. 대용량 DB솔루션에 보면 나오는 것입니다만...

사용해 본적이 없어서 솔직히 이거라고 말씀드리기 어렵네요..

 

이론적으로는 신규데이터와 이전 테이터의 테이블을 아우터 조인으로

조인한 경우에 널이 되는 데이터가 신규이므로 insert를 아니면 update를 각각 처리해 주는 것이었습니다.

 

결국에는 각각의 데이터들에 대한 테이블이 필요하게 되는 것이라서

님의 경우에 맞는지 잘 모르겠군요...

 

약간이 도움이라도 되신다면 ...

채민석님이 2006-04-24 13:58에 작성한 댓글입니다. Edit

아마 replace명령이 아닌가요?

 

mysql은 오래전 버젼부터 replace명령이 있었고

 

oracle은 9i버젼부터 이명령이 추가된걸로암니다

( 이기능처리가 필요한곳에선 처리능률이 훨씬 뛰어나죠 )

 

하지만 이명령은 표준이 아니라서 postgres는 고집을 하고있는줄로..

 

가우님이 2006-04-24 14:46에 작성한 댓글입니다. Edit

오라클에선 merge 문으로 해결하죠..

replace 는 문자열 치환하는 펑션입니다.

걍걍님이 2006-04-24 15:54에 작성한 댓글입니다. Edit

네 오라클은 merge네요

 

위 문제는 client에서 처리하는것도 무방하고 동일한 패턴으로 자주쓰는거라면 DB function으로 만들어도 무방할건데요

 

어차피 insert든 update든 결과값처리를 해야할테니까

 

슈도코드로

try:

    insert

except 중복오류:

    update

 

이런식으로 처리하면 되지 않나요?

 

 

 

가우님이 2006-04-25 09:26에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6641특정필드에 문자열을 더하여 저장할 수 없을까요? [3]
신인식
2006-04-25
2813
6640pgsql 개작살 ㅠ_ㅠ; [2]
신기배
2006-04-25
6154
6639'mm-dd'와 'yyyy-mm-dd'의 비교는요? [2]
조우현
2006-04-25
2758
6638insert 인데 update로 가능하게?? [4]
MIN
2006-04-24
3006
6636UTF-8, eucKR 인코딩 문제.. [2]
김명범
2006-04-23
5450
6635DB insert failed 오류 발생 [1]
최재곤
2006-04-22
2625
6634postgreSQL을 MS-SQL로 이전하는 방법??? [3]
김명범
2006-04-22
2636
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다