본문 바로가기

mssql10

[MSSQL] CSV 파일 생성 및 문제 해결 방법 MSSQL에서 CSV 파일 생성 방법은 크게 3가지가 있다. 1. SSMS, 즉 툴을 이용하여 생성 2. Bulk문 사용 3. bcp cmdshell 사용 1번은 수 많은 작업이 주기적으로 필요 할 시 일일이 사람이 클릭해서 만들어야되므로 매우 번거롭다. 하지만 간단한 테스트로는 사용하기 가장 편하다. 2번은 로컬환경에서만 가능하다. 대부분 토이 프로젝트나 연습용이 아니라면 DB서버는 별개로 있을 것이다. 따라서 사용하기 힘들다. 3번은 다른 서버도 접근이 가능하지만 권한이 필요하다. 권한만 있다면 CSV파일 생성 뿐만 아니라 수많은 작업이 가능하기에 매우매우 조심해야된다. bcp의 여러 기능 중 CSV 파일 생성 방법이다. EXEC master..xp_cmdshell 'bcp "[select문]" qu.. 2020. 4. 27.
[MSSQL] OPENQUERY 대용량 DML 작업 시 문제점 OPENQUERY를 이용하여 POSTGRESQL에 DELETE 및 INSERT 작업을 진행하였다. 적게는 수천건부터 많게는 수백만건 작업을 해아하는데 어째서인지 만건만 넘어가도 서버가 뻗어버렸다. 그 원인은 바로 OPENQUERY의 메커니즘에 있었다. 예를 들어 DELETE FROM MEMBER 가 있다고 가정하면 그냥 POSTGRESQL에서 실행 시 MEMBER의 ROW 수 만큼 삭제되는데 실행계획을 보면 1 EXCUTE된다. 하지만 OPENQUERY 실행 시 ROW 수 = EXCUTE 수가 된다. 즉 하나를 삭제할 때 마다 모든 테이블을 읽어온다는 뜻이다. INSERT도 마찬가지로 INSERT 작업 후 SELECT문을 실행시켜 모든 데이터를 한번 얻어온다고 한다. 직접 확인은 못했지만 아래 링크를 확.. 2020. 4. 22.
[MSSQL] OPENQUERY에 변수 사용 시 문제점 및 해결방법 DECLARE @ID VARCHR(100) SET @ID = 'USER123' DELETE T1 FROM OPENQUERY(DEV, SELECT * FROM TBL_MEMBER WHERE ID = @ID) AS T1 이렇게 OPENQUERY 안에 MSSQL의 DECLARE 변수 사용 시 에러가 발생한다. 해결방법은 OPENQUERY를 변수에 담아 실행시키는 방법이 있다. DECLARE @ID VARCHR(100), @OPENSQL NVARCHR(1000); SET @ID = 'USER123' SET @OPENSQL = N'DELETE T1 FROM OPENQUERY(DEV, SELECT * FROM TBL_MEMBER WHERE ID = '+ @ID +') AS T1' EXECUTE SP_EXCUTESQ.. 2020. 4. 14.
[MSSQL] IF-ESLE 프로그래밍 언어(C, JAVA...) SQL if([조건문]) { 실행할 구문 } else if(...) { 실행할 구문 } else { 실행할 구문 } IF [조건문] BEGIN 실행할 구문 END ELSE IF [조건문] BEGIN 실행할 구문 END ELSE BEGIN 실행할 구문 END 회원이 존재하는지 안하는지 검사해서 메세지 출력하는 쿼리 EX) IF (SELECT COUNT(*) FROM TBL_MEMBER) > 0 BEGIN PRINT("회원이 존재합니다") END ELSE BEGIN PRINT("회원이 없습니다") END 2020. 4. 10.