truncate ->this resets the entire table, is there a way via truncate to reset particular records/check conditions.
For ex: i want to reset all the data and keep last 30 days inside the table.
Thanks.
SELECT DISTINCT a.name
FROM sysobjects AS a
LEFT JOIN syscomments AS b ON a.id = b.id
WHERE a.xtype = 'P'
AND b.text LIKE '%찾은문자열%'
dateadd, datediff (0) | 2016.01.12 |
---|---|
GetDate format 변환 (0) | 2013.12.16 |
[업무] 임시 테이블을 이용해서 데이터 JOIN (0) | 2013.10.30 |
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
dateadd
-- 월의 마지막 날
select dateadd(month,1,getdate())-day(getdate())
-- 월의 첫째날
select dateadd(day,-(day(getdate()-1)), getdate())
-- 월의 13개월전 첫째날
select dateadd(month,-12,getdate())-(day(getdate())-1)
-- 1일 더하기
select dateadd(day,1,getdate())
-- 1월 더하기
select dateadd(month,1,getdate())
-- 1년 더하기
select dateadd(year,1,getdate())
datediff
datediff( 시간단위구분자, 시작시간, 종료시간 )
전체 프로시져에서 특정 문자열이 사용된 프로시져를 찾는 법 (0) | 2017.02.07 |
---|---|
GetDate format 변환 (0) | 2013.12.16 |
[업무] 임시 테이블을 이용해서 데이터 JOIN (0) | 2013.10.30 |
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
f--Getdate() Select Getdate() --YYYY/MM/DD Select Convert(varchar(10),Getdate(),111) --YYYYMMDD Select Convert(varchar(10),Getdate(),112) --HH:MM:SS Select Convert(varchar(8),Getdate(),108) --HH:MM:SS:mmm Select Convert(varchar(12),Getdate(),114) --HHMMSS Select Replace(Convert(varchar(8),Getdate(),108),':','') --HHMMSSmmm Select Replace(Convert(varchar(12),Getdate(),114),':','') --YYYY/MM/DD HH:MM:SS Select Replace(Convert(varchar(30),Getdate(),120),'-','/') --YYYY/MM/DD HH:MM:SS Select Replace(Convert(varchar(30),Getdate(),121),'-','/') --YYYY/MM/DD HH:MM:SS Select Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108) --YYYYMMDDHHMMSS Select Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','')
전체 프로시져에서 특정 문자열이 사용된 프로시져를 찾는 법 (0) | 2017.02.07 |
---|---|
dateadd, datediff (0) | 2016.01.12 |
[업무] 임시 테이블을 이용해서 데이터 JOIN (0) | 2013.10.30 |
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
dateadd, datediff (0) | 2016.01.12 |
---|---|
GetDate format 변환 (0) | 2013.12.16 |
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
Truncate with condition - 조건 주고 TRUNCATE 하기 (0) | 2013.09.25 |
출처 - http://blog.danggun.net/1036
이전 글에서 테이블변수에 대해서 이야기를 했었습니다.
임시테이블과 테이블변수는 사용하는 방법면에서는 별차이가 없으나 성능상 차이가 있다고 합니다.
테이블 변수가 성능면에서 더 유리하다고 하는데....직접 비교는 해보지 않아서 잘 모르겠습니다 ㅎㅎㅎ
(참고 : [MSSQL] 저장프로시저에서 테이블(Table) 변수 사용하기)
그런이유로 테이블 변수를 더 권장하고 있으나....임시 테이블을 사용하는 방법도 알려드리겠습니다 ㅎㅎ
선언 임시테이블이므로 크래딧테이블(Create Table)로 생성하면 됩니다.
1 2 3 4 5 | --리턴값을 받기위한 임시 테이블 --Create Table [생성할 테이블 이름] ( [컬럼명] [데이터형], ... , [컬럼명] [데이터형] ) Create Table #Result ( nIndex int , sName varchar (16) , sID varchar (16)) |
1 2 3 4 | --Insert [임시테이블] Exec [sql문] Insert #Result Exec ProcTest @nIndox , @sName , @sID |
1 | Set @nTemp = ( Select * From #Result) |
GetDate format 변환 (0) | 2013.12.16 |
---|---|
[업무] 임시 테이블을 이용해서 데이터 JOIN (0) | 2013.10.30 |
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
Truncate with condition - 조건 주고 TRUNCATE 하기 (0) | 2013.09.25 |
테이블 복사 쿼리 (0) | 2013.09.25 |
으앙 정신없다. 오랜만에 MSSQL , 아 진짜 DTG때문에 죽겠다. 꿈에서도 작업함ㅋㅋ
하루의 데이터를 정리해서 요약하는 프로시저가 도는데
문자열 이나 이진 데이터 는 잘립니다.
라는 문구와 함께 매번 프로시저가 종료되었다.
원인은 입력 테이블의 크기보다 큰 값을 넣으려고 해서.
차량번호를 입력하는 VARCHAR(12) 짜리 열에
경기32바1111 과 같은 제대로 된 차량번호가 아닌 테스트용 임시 차량번호 테스트경기32바1111 을 넣으려고 하니
사이즈가 너무 커서 에러발생..
그래서 테이블을 지워버리고 해당 열을 VARCHAR(20)으로 사이즈를 바꿔서 새로 만들었다.
해결끝.
[업무] 임시 테이블을 이용해서 데이터 JOIN (0) | 2013.10.30 |
---|---|
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
Truncate with condition - 조건 주고 TRUNCATE 하기 (0) | 2013.09.25 |
테이블 복사 쿼리 (0) | 2013.09.25 |
저장 프로시저 만들었음. (1) | 2013.09.10 |
4 | The short answer is no: MySQL does not allow you to add a But the good news is that you can (somewhat) work around this limitation. Simple, safe, clean but slow solution using First of all, if the table is small enough, simply use the
The Unfortunately, this will be very slow if your table is large... and since you are considering using the So here's one way to solve your problem using the Simple, fast, but unsafe solution using
Unfortunately, this solution is a bit unsafe if other processes are inserting records in the table at the same time:
Unfortunately, it is not possible to lock the table and truncate it. But we can (somehow) work around thatlimitation using Half-simple, fast, safe but noisy solution using
This should be completely safe and quite fast. The only problem is that other processes will see table Disclaimer: I am not a MySQL expert, so these solutions might actually be crappy. The only guarantee I can offer is that they work fine for me. If some expert can comment on these solutions, I would be grateful. | ||
출처 : http://stackoverflow.com/questions/3704834/truncate-with-condition
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
---|---|
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
테이블 복사 쿼리 (0) | 2013.09.25 |
저장 프로시저 만들었음. (1) | 2013.09.10 |
[펌] 프로시저 만들기 (0) | 2013.08.29 |
mssql 테이블 복사 쿼리 입니다.
1. 테이블을 생성하면서 테이블의 데이타 복사
select * into 생성될테이블명 from 원본테이블명
테이블 구조만 복사하겠다면
select * into 생성될테이블명 from 원본테이블명 where 1=2
2. 테이블이 이미 생성되어 있는경우 데이타만 복사
insert into 카피될테이블명 select * from 원본테이블명
특정 데이타만 복사 하겠다면
insert into 카피될테이블명 select * from 원본테이블명 where 검색조건
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
---|---|
Truncate with condition - 조건 주고 TRUNCATE 하기 (0) | 2013.09.25 |
저장 프로시저 만들었음. (1) | 2013.09.10 |
[펌] 프로시저 만들기 (0) | 2013.08.29 |
일반 쿼리문과 저장 프로시저의 차이점 (0) | 2013.08.21 |
입력받은 seq 보다 작은 seq의 데이터들을 999개씩 지우는 프로시저 :) |
USE [OKNETV2_WEB] GO /****** Object: StoredProcedure [dbo].[delete_proc] Script Date: 09/10/2013 14:03:33 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= ALTER PROCEDURE [dbo].[delete_proc] @seq int AS while @seq > 0 BEGIN delete from ODTG_DETAIL where SEQ>(@seq -1000) and SEQ < @seq set @seq = @seq - 1000 END |
약 천 육백만개의 데이터를 지워야 하는데..
디비 부하때문에 천개씩 지워야 하는상황 :(
천개씩 몇번 하다보니 이건 아니다 싶어서....
그래서 저장 프로시저를 만들었다.
사실 프로시저 안에서 반복문이 돌아가는건 안좋은 거랜다.
밖의 실행문에서 반복하여 프로시저를 실행해야 옳다고 하니 참고 할 것.
Truncate with condition - 조건 주고 TRUNCATE 하기 (0) | 2013.09.25 |
---|---|
테이블 복사 쿼리 (0) | 2013.09.25 |
[펌] 프로시저 만들기 (0) | 2013.08.29 |
일반 쿼리문과 저장 프로시저의 차이점 (0) | 2013.08.21 |
Store Procedure (저장 프로시저) (0) | 2013.08.13 |
출처 : http://cafe.naver.com/hackertime/397
저장 프로시저 만들기 사용법) CREATE PROC[EDURE] 저장 프로시저 이름
1. 매개변수 없는 프로시져 예) CREATE PROC up_member AS Begin End 실행명령 : EXEC 실행할 저장 프로시저 이름 (EXEC up_member)
2. 매개변수 있는 프로시져 예) CREATE PROC up_member @id varchar(20) AS Begin WHERE member_id=@id End 실행명령 : EXEC 실행할 저장 프로시저 이름 변수 (EXEC up_member 'sunmi')
3. 리턴값을 갖는 프로시져 예) CREATE PROC up_member AS Begin DECLARE @Count int RETRUN @Count End
실행명령 : DECLARE @Count int
4. OUTPUT 매개변수 이용하는 프로시져 예) CREATE PROC up_member @Count int OUTPUT Begin SELECT @Count = count(*) End 실행명령 : DECLARE @Count int
5. 프로시져 삭제하기 - drop proc 프로시저명
6 프로시져 수정하기 - ALTER PROC 수정할 SP 이름
7. 프로시저내에 분기 - CREATE PROC sp_UpPrice |
테이블 복사 쿼리 (0) | 2013.09.25 |
---|---|
저장 프로시저 만들었음. (1) | 2013.09.10 |
일반 쿼리문과 저장 프로시저의 차이점 (0) | 2013.08.21 |
Store Procedure (저장 프로시저) (0) | 2013.08.13 |
포트 1433에 대한 TCP/IP 연결에 실패했습니다. 오류: "Connection refused: connect. (0) | 2013.08.13 |