DB

[MS-SQL] DB이관시 동적으로(?)INSERT 쿼리 작성하는 방법

이 방법은 10년전 오라클 DBA 보조 업무를 맡고 있을 때 배웠던 방법에 대해 기록합니다.

가령, 테스트 DB에서 실DB로 데이터를 이관할때 사용하면 됩니다.

 

MSSQL 테이블 스키마 및 데이터 모두 SQL 스크립트 생성하는 방법

이 방법은 모든 테이블과 그 테이블들의 모든 데이터를 기준으로 이관할 때 이용하면 매우 편합니다. 전체 테이블과 데이터를 모두 스크립트화하여 SQL파일로 생성할 수 있습니다.

 

1. MSSQL의 경우 “개체탐색기”에서 DB를 선택 후 마우스 오른쪽 우클릭

2. 팝업메뉴에서 태스크(T) 선택

3. 스크립트 생성(E)를 선택


4. 스크립트 생성 및 게시 마법사 팝업에서 전체를 할지 원하는 테이블만 할지 선택


5. 특정 테이블 선택 후 “고급(A)” 버튼을 클릭합니다.

6. 스크립팅할 데이터 형식을 선택 후 “스키마 및 데이터“를 선택하고 확인 버튼을 클릭합니다.

스키마만 선택할 경우, 테이블 CREATE문에 대한 스크립트만 생성됩니다.


 

특정 테이블의 조건에 따라 동적 쿼리로 INSERT문 생성하는 방법

이번엔 내가 원하는 데이터에 대한 INSERT문 작성 쿼리에 대한 정보입니다. 아래와 같이 쿼리를 작성하시면 INSERT문을 생성할 수 있습니다.

select
'insert into TB_TEMP_CODE (
	COMPANY,	CODE_M,	CODE_M_NM,	TEMP_FIELD1_NM,	TEMP_FIELD2_NM
,	TEMP_FIELD3_NM,	TEMP_FIELD4_NM,	TEMP_FIELD5_NM,	REMARK,	USE_YN,	DEPLOY_YN,	CRT_USER
,	CRT_TIME,	UPD_USER, UPD_TIME) 

values(' 
+''''+ COMPANY +''''+','+''''+	CODE_M +''''+','+''''+ CODE_M_NM+''''+','+''''
+	TEMP_FIELD1_NM+''''+','+''''+TEMP_FIELD2_NM+''''+','+''''+ TEMP_FIELD3_NM
+''''+','+''''+TEMP_FIELD4_NM+''''+','
+''''+TEMP_FIELD5_NM+''''+','+''''+REMARK+''''+','+''''+USE_YN+''''
+','+''''+DEPLOY_YN+''''+','+''''+CRT_USER+''''+',' +''''
+ CONVERT(VARCHAR, CRT_TIME)+''''+','+''''+UPD_USER+''''+','
+''''+CONVERT(VARCHAR, UPD_TIME) +''''+')'
from  TB_TEMP_CODE where code_m like 'COM_%'

[쿼리 실행결과]

insert into TB_TEMP_CODE (
	COMPANY,	CODE_M,	CODE_M_NM,	TEMP_FIELD1_NM,	TEMP_FIELD2_NM
,	TEMP_FIELD3_NM,	TEMP_FIELD4_NM,	TEMP_FIELD5_NM,	REMARK,	USE_YN,	DEPLOY_YN,	CRT_USER
,	CRT_TIME,	UPD_USER, UPD_TIME) values('SYSTEM','TEST_CLOSE','폐업사유','','','','','','기타','Y','N','admin','2021-12-22 09:08:16.9768071','admin','2021-12-22 09:08:16.9768071')
insert into TB_TEMP_CODE (
	COMPANY,	CODE_M,	CODE_M_NM,	TEMP_FIELD1_NM,	TEMP_FIELD2_NM
,	TEMP_FIELD3_NM,	TEMP_FIELD4_NM,	TEMP_FIELD5_NM,	REMARK,	USE_YN,	DEPLOY_YN,	CRT_USER
,	CRT_TIME,	UPD_USER, UPD_TIME) values('SYSTEM','TEST_CUST_STATUS','고객상태','','','','','','','Y','N','admin','2021-12-22 09:05:48.3458648','admin','2021-12-22 09:05:48.3458648')
insert into TB_TEMP_CODE (
	COMPANY,	CODE_M,	CODE_M_NM,	TEMP_FIELD1_NM,	TEMP_FIELD2_NM
,	TEMP_FIELD3_NM,	TEMP_FIELD4_NM,	TEMP_FIELD5_NM,	REMARK,	USE_YN,	DEPLOY_YN,	CRT_USER
,	CRT_TIME,	UPD_USER, UPD_TIME) values('SYSTEM','TEST_FAIL_CD','실패사유 코드','','','','','','없음','Y','N','admin','2021-12-22 09:15:11.7361290','admin','2021-12-22 09:16:28.7724336')

오늘은 여기까지!!

 

 

Leave a Reply

error: Content is protected !!