블로그 이미지
프로그램을 가장 훌륭하게 작성하는 방법은 상태가 변경되는 오브젝트들과 수학적인 값을 나타내는 오브젝트들의 조합으로 표현하는 것이다. -Kent Beck 초초초보

카테고리

Programming (184)
ASP.NET (9)
Silverlight (2)
Javascript (20)
C# (8)
java (25)
SQL (14)
Oracle (3)
MyBatis (3)
기타 (52)
개발방법론 (1)
trouble shooting (2)
Linux (5)
스칼라 (5)
html (2)
grails & gradle (3)
Spring (2)
rabbitmq (1)
(3)
spark (0)
docker (3)
Total
Today
Yesterday

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

MS-SQL 2008 MERGE, OUTPUT

SQL / 2011. 1. 9. 22:34

1. MERGE
(MS-SQL 2008, Oracle 9i 에서 생김)
 두 테이블간의 데이터를 합치는 작업이다.
단 하나의 트랜잭션에서 작업이 진행되어야 함.

Source Table과 Target 테이블의 데이터를 비교했을때
겹치는부분(빨간색)은 Update, Source Table 에만 있는 데이터는 INSERT
작업을 진행한다.

 
--MERGE
if OBJECT_ID('tempdb..#TargetTable') is not null
drop table #TargetTable
if OBJECT_ID('tempdb..#SourceTable') is not null
drop table #SourceTable

create table #SourceTable
(
 a int identity
 ,b varchar(100)
)
create table #TargetTable
(
 a int identity
 ,b varchar(100)
)
insert into #SourceTable(b) values('aaa'),('bbb'),('ccc'),('ddd'),('eee'),('fff')
insert into #TargetTable(b) values('111'),('222'),('333'),('444'),('555'),('666'),('777'),('888'),('999')

--MERGE 작업을 진행할 Target
MERGE INTO  #TargetTable AS t
--기준이되는 데이터가 있는 Source Table 과 JOIN 을 한다.
USING #SourceTable AS s ON
s.a = t.a
--데이터가 겹칠때
WHEN MATCHED THEN
   UPDATE SET t.b = s.b
--Source 테이블에만 데이터가있을때
WHEN NOT MATCHED THEN
   INSERT (b) values( s.b);
  
select * from #TargetTable


2. OUTPUT
A 테이블에 DML(update, insert, delete)작업이 일어나고
B 테이블에 같은 조건으로 Insert 를 할 수 있다.
단, 하나의 트랜잭션에서 작업이 진행되어야 한다.
Insert  일때는 inserted Object 가 생성된다.
Delete 일때는 deleted Object 가 생성된다.

Update 일때는 deleted Object와 inserted Object 가 둘다 생성된다.
이를 이용하여 B테이블에도 데이터를 입력할 수 있다.

 
--OUTPUT
if OBJECT_ID('tempdb..#1st') is not null
drop table #1st
if OBJECT_ID('tempdb..#2nd') is not null
drop table #2nd

create table #1st
(
 a int identity
 ,b varchar(100)
)
create table #2nd
(
 a int identity
 ,new_b varchar(100)
 ,old_b varchar(100)
)

insert into #1st(b)
OUTPUT inserted.b
into #2nd (new_b)
values('aaa'),('bbb'),('ccc'),('ddd'),('eee'),('fff')

select *
from #2nd

update #1st
set b = b + '111'
OUTPUT inserted.b, deleted.b
into #2nd (new_b,old_b)


select *
from #2nd


Posted by 초초초보
, |

jQuery Selector 기본 표

Javascript / 2010. 12. 7. 14:53
Posted by 초초초보
, |
웹에서도 실행할 수 있는 무료 원격 툴
주소 : http://www.nqvm.com/
NQVM ( Network Queing Virtual Machine )?

1. NQVM은 원격지에 있는 자원 (컴퓨터, 서버, 네트워크 카메라, VNC 서버 및 웹 페이지)들을 웹 브라우저 또는 뷰어 컴퓨터에서 빠르고 안전하게 원격통합관리 할 수 있는 사용자 중심의 소프트웨어입니다.

2. NQVM은 VNC와 같은 오픈소스를 전혀 사용하지 않고 원격제어 핵심기술인 DDI (Device Driver Interface) 방식의 전용드라이버를 포함한 모든 제반 기술을 독자적으로 개발한 새로운 개념의 원격 제어•지원 소프트웨어입니다.

3. NQVM은 독자기술로 제작이 되었기 때문에 고객의 다양한 NEEDS에 적극 대응할 수 있으며, 고객환경에 가장 적합한 커스터마이징을 제공하는 높은 확장성을 가진 소프트웨어입니다.
Posted by 초초초보
, |
Posted by 초초초보
, |
Posted by 초초초보
, |

iBatis에서 MyBatis로 프로젝트 이름 변경.

홈페이지 : http://www.mybatis.org/index.html
구글코드 : http://code.google.com/p/mybatisnet/


끝. 

Posted by 초초초보
, |

-- ie only

window.opener='nothing';
window.open('','_parent','');

window.close();



-- all
 window.open('', '_self', '');
 window.close();


끝.

Posted by 초초초보
, |

Transaction Log 자르기

SQL / 2010. 5. 11. 13:57


Transaction Log 자르기

1. MS-SQL 2005
backup log [dbname] with no_log
dbcc shrinkfile('IGROO_DB_Log',1)


2. MS-SQL 2008
ALTER DATABASE [dbname]  SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE(2, 1)
GO
ALTER DATABASE [dbname]  SET RECOVERY FULL

Posted by 초초초보
, |

 window.showModalDialog 로 넘길 수 있는 최대문자는 4096자

우회적으로 해결.
먼저 parent 창에서
문자열 리턴할 함수 만들고
--------------------------------------
function GetXmlString(){}
--------------------------------------
자기 자신을 넘겨주고..
--------------------------------------
window.showModalDialog(url,window.self,feature);
--------------------------------------

모달창에서 받을때
-------------------------------------
var argument = window.dialogArguments.document.Script.GetXmlString();
-------------------------------------

끝.

Posted by 초초초보
, |


A 테이블과 B 테이블의 데이터를 동기화 시킬 때

A 테이블의 키와
B 테이블의 키가 같다고 가정하고

키를 기준으로 조인을 시키고
조인된 로우들의 데이터를 동기화 시킨다.


-- 테스트 테이블을 만들고
create table test1
(
 cn varchar(100)
 ,data1 varchar(100)
 ,data2 varchar(100)
 ,data3 varchar(100)
 ,data4 varchar(100)
 
)

-- 테스트 데이터 삽입
insert test1 values('cn1','data1','data11','data111','data1111')
insert test1 values('cn2','data2','data22','data222','data2222')
insert test1 values('cn3','data3','data33','data333','data3333')
insert test1 values('cn4','data4','data44','data444','data4444')
insert test1 values('cn5','data5','data55','data555','data5555')
insert test1 values('cn6','data6','data66','data666','data6666')
insert test1 values('cn7','data7','data77','data777','data7777')
insert test1 values('cn8','data8','data88','data888','data8888')
insert test1 values('cn9','data9','data99','data999','data9999')

-- 같은 구조의 테이블을 복사
select * into test2 from test1

-- 테스트를 위하여  복사된 테이블의 데이터를 일부 변경 한다
update test2 set data1 ='changedata1',
data2 ='changedata2',data3 ='changedata3',data4 ='changedata4'
where cn in ('cn2','cn3','cn4','cn5')


-- select 를 이용하여 데이터가 다른 것을 확인
select * from test1
select * from test2



-- 원본 테이블과 데이터가 약간 변경된 테이블을 조인 후
-- update 절의 set  구문에서 컬럼 매핑 시킨다.
update test2 SET data1 = t1.data1, data2 = t1.data2,
data3 = t1.data3, data4 = t1.data4
from test1 t1 JOIN test2 t2
ON t1.cn = t2.cn


데이터 동기화 끝.

 

 

 

 

 

Posted by 초초초보
, |