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
운영게시판
최근게시물
MS-SQL Q&A 6728 게시물 읽기
No. 6728
안녕하세요 존경하는 선배님들. DB 초보가 질문드려요 ㅠㅜ
작성자
이성원(wolfre)
작성일
2013-09-11 12:42
조회수
7,331

안녕하세요 존경하는 선배님들. DB 초보가 질문드려요 ㅠㅜ

 

질문은...

 

테이블 이름이 날짜로된 테이블이 있습니다.

ex)

TableName130905

TableName130906

TableName130907

TableName130908

 

 

이 테이블을 하나로 합치려고 합니다.

위 테이블이 계속해서 날짜별로 쌓이고, 일주일에 한 번씩 합치는 SP를 만드려고 합니다.

 

여기서 문제가. TableName130908 이전 테이블까지 다 합쳤다면 그 다음부터 쌓일 TableName130910, TableName130911 ...등등 데이터를 자동으로 찾아서 합칠 방법이 있을까요?

(기존에 합친 테이블 제외하고 신규 날짜부터 다시 누적....)

 

선배님들 답변 부탁드려요.

 

 

 

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

 (1) 어차피 테이블 이름이 'TableName날짜'이므로 매일 전일날자로 처리하는 프로시저가 job으로 돌면 될 듯 싶습니다.

 
(2) 우선 처리가 된 테이블 이름들을 넣을 '처리완료테이블'테이블을 생성하여 기처리된 테이블들을 모두 쌓아둡니다.
 
SELECT * 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TableName%' AND TABLE_TYPE = 'BASE TABLE'
 
로 얻어진 테이블에서 생성해뒀던 테이블과 left join 하여 처리되지 않은 테이블들을 처리하고
 
처리된 테이블들에 대해서는 '처리완료테이블'에 삽입하는 정도로 만들면 될 듯 싶습니다.
 
 
 
그나저나 날짜별 월별 테이블을 만드는 앤틱하고 미련곰팅이 같은 스키마들은 언제쯤이면 현업에서 없어질까요? ㅋ
 
우욱님이 2013-09-11 14:13에 작성한 댓글입니다. Edit

우욱님 진심으로 답변 주신 것에 대하여 감사합니다.!

 

염치없는 부탁이지만 혹시 가능 하시다면...

 

조금만 더 자세히 설명 부탁드려도 될런지요 ㅠㅠ

 

 

이성원(wolfre)님이 2013-09-11 14:58에 작성한 댓글입니다.

DECLARE @today DATETIME

;
DECLARE @SQL NVARCHAR(MAX)
;
SET @today = GETDATE()
;
SET @SQL = 'INSERT 대상테이블( 컬럼1, 컬럼2, ... ) '
;
SET @SQL = @SQL + N'SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -7, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -6, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -5, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -4, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -3, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -2, @today ), 12 ) '
;
SET @SQL = @SQL + N'UNION ALL SELECT 컬럼1, 컬럼2, ... FROM TableName' + CONVERT( NVARCHAR(6), DATEADD( DAY, -1, @today ), 12 ) '
;
 
PRINT @SQL; -- 잘 되는거 같으면 아래의 EXEC 주석 풀기
 
--EXEC( @SQL );
 
 
위와 같이 procedure를 생성성해서 매주 원하는 일자에 돌도록 job에 등록하시면 됩니다.
우욱님이 2013-09-11 16:27에 작성한 댓글입니다.
이 댓글은 2013-09-11 17:11에 마지막으로 수정되었습니다. Edit

우욱님 진심으로 감사드리고 또 존경합니다 ^^

 

친절한 답변에 감동이에요!

 

늘 행복한 일만 가득하시길...

이성원(wolfre)님이 2013-09-11 16:40에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6734test1이 test2와 다른것 찾는 쿼리문이궁금합니다... [4]
김우성
2013-09-23
7104
6733쿼리 조건문 합치기. 도와주세요. [3]
조중연
2013-09-23
7309
6732Query로 Drop,Create 를 했어요 데이터를 다시 살릴수있을까요? [3]
김우성
2013-09-17
7865
6728안녕하세요 존경하는 선배님들. DB 초보가 질문드려요 ㅠㅜ [4]
이성원
2013-09-11
7331
6727mssql 에서 dbreindex 이후 unallocated space가 증가했습니다. [1]
kims
2013-09-11
7938
6726table dirty read 문제로 골치가 아픕니다. [1]
한민환
2013-09-09
7755
6725MDF파일이 왜이리 증가할까요. [1]
조성남
2013-09-08
7675
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다