본문 바로가기

728x90
반응형

프로그래밍&IT/SQL Server (MS-SQL)

(18)
MSSQL의 조회데이터를 csv로 만들기 MSSQL의 조회데이터를 CSV파일로 만들기DB에 저장해놓은 Kospi지수정보를 조회해서 CSV파일로 저장해야할 필요성이 있어서 찾아봤다. 1. UI에서 바로 저장하기쿼리 실행: SSMS에서 원하는 데이터를 조회하는 SQL 쿼리를 실행합니다.결과 저장:조회된 결과에서 마우스 오른쪽 버튼을 클릭하고 결과 저장 > 파일로 저장을 선택합니다.파일 형식을 CSV로 설정하고 저장 경로를 지정합니다.CSV 파일로 내보내기:파일 형식을 "CSV(쉼표로 구분된 값)"으로 선택하여 CSV 형식으로 데이터를 내보낼 수 있습니다. 2. SQL 쿼리와 bcp 명령줄 도구를 이용한 방법bcp 명령어를 사용하면 대량의 데이터를 CSV 파일로 쉽게 내보낼 수 있습니다.bcp "SELECT * FROM [데이터베이스명].[스키마명]..
SQL Server - 테이블 수정 저장시 '테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함' 옵션 "디자인"에서 테이블 수정할 때 저장이 안 될 때 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션 문제 생길 때. SQL Server Management Studio (SSMS)에서 테이블 수정 시 이와 같이 메시지가 나오면서 수정이 안 될 때? 컬럼의 NULL 허용 설정 변경 테이블의 컬럼 순서 변경 컬럼 데이터 형식 변경 새로운 컬럼 추가 이러한 사항은 메시지와 같이 해당 옵션을 사용할 때 발생한다. 도구 → 옵션 → 디자이너 [테이블을 다시 만들어야 하는 변경 내용 저장 안 함]의 옵션을 체크 해제한다. 수정 후 저장이 가능하다. 사실 간단한 건데 매번 찾아보기 뭐해서 글을 올려둔다.
SQL Server - FOR XML PATH 그리고 STUFF FOR XML PATH, STUFF 그리고 조합해 보기 FOR XML PATH 쿼리 결과를 XML 형태로 표현. FOR XML PATH ('row element 이름') 만약 'row element 이름'이 없으면 로 감싸진다. 행 구분자 추가해서, 합친 문자로도 SELECT lastname FROM HR.Employees FOR XML PATH ex) CameronDavisDoyleFunkKingLewMortensenPeledSuurs SELECT lastname FROM HR.Employees FOR XML PATH ('LName'); 결과 - Cameron Davis Doyle Funk King Lew Mortensen Peled Suurs SELECT '/' + lastname FROM HR.Em..
SQL Server - GO에 대해서 (BATCH) GO를 알기 전에 작업단위 (BATCH)란? 실행을 위해 프로그램으로부터 서버로 동시에 전송되어 실행되는 여러 T-SQL문장의 조합 MSSQL의 데이터베이스 엔진은 작업단위로 전송된 SQL 문장들에 대해 단일 실행계획으로 만들어 수행 만약 작업단위내 한 문장이라도 컴파일 오류를 포함하게 되면 해당 작업단위는 수행되지 않는다 이때, 일괄처리를 정하기위해서 "GO"라는 예약어를 사용한다. GO를 쓰는 이유. 한마디로 BATCH (일괄처리)의 단위라고 볼 수 있다. 한줄 한줄 실행할 때마다 매번 데이터베이스에 접속하면 처리시간이 길어지고 비효율적이다. 이에 큰 덩어리 단위로, 묶어서 보내주는 BATCH 개념이 나오게 된다. 그리고 GO는 그 구분점. GO명령어는 T-SQL의 구문이 아니며, 아래의 3개 툴에서..
트랜젝션.Transaction - 원자성, 일관성, 격리성, 영속성 (ACID) 트랜잭션 (Transaction , 작업단위) 여기에선 데이터를 쿼리하고 변경하는 다양한 작업뿐만 아니라 데이터 정의를 변경하는 작업도 포함된다. 경계는 명시적 / 암시적으로 지정할 수 있다. - 명시적 직접 BEGIN문과 COMMIT [실패시 ROLLBACK] TRAN을 사용한다. BEGIN TRAN/TRANSACTION 구문을 사용하며, 마지막 부분에는 COMMIT TRAN / TRANSACTION이나 ROLLBACK TRAN / TRANSACTION을 지정한다. - 암시적 기본적으로 개별 구문마다 트랜젝션으로 묶어서 처리하게된다. - 암시적 트랜젝션 구문 IMPLICIT_TRANSACTIONS = on / off [ON 이면 암시적 트랜젝션] 트랜젝션의 끝에는 COMMIT이나 ROLLBACK을 지정..
데이터 조작 - 데이터 입력하기 (INSERT VALUES, SELECT, BULK) - 아는 것도 있지만, 살짝 아리까리한것도 있어서 한 번에 정리 * INSERT VALUES (& 향상된 VALUES) - 대부분이 많이 아는 (기초적인) 구문일듯. INSERT INTO dbo.Orders(orderid, empid, custid) VALUES(10002, 5, 'B'); INSERT INTO dbo.Orders (orderid, orderdate, empid, custid) VALUES (10003, '20090213', 4, 'B') , (10004, '20090214', 1, 'A') , (10005, '20090213', 1, 'C') , (10006, '20090215', 3, 'C'); -- 여러 행을 쉼표로 구분해서 넣을수도 사실은 이 구문보단 아래의 사항을 복습하려는게 목..
그룹핑 집합 (GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID) 그룹핑 집합? 그룹핑을 수행하는 특성들의 집합. 아래의 4개의 결과 집합을 하나의 단일 결과집합으로 반환한다고 한다면, SELECT empid, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid, custid UNION ALL SELECT empid, NULL, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid UNION ALL SELECT NULL, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY custid UNION ALL SELECT NULL, NULL, SUM(qty) AS SumQty FROM dbo.Orders; 코드의 길이, 성능이라는 문제를 내포한다. ..
데이터 피벗, 언피벗 (Pivot, Unpivot) 데이터 피벗? 행을 기반으로 하는 데이터를 컬럼을 기반으로 하는 상태로 바꾸는 것. 다음같은 내용의 결과가 있다고 할 때, SELECT empid, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid, custid; 직원 ID별 (행), 고객별 (컬럼) 의 총 수량을 출력하고자 하는 리포트를 만들고자 한다면. (피벗팅) 모든 피벗팅은 3가지 논리적 프로세싱 단계로 수행되며, 각 단계마다 필요한 요소가 존재한다. 그룹핑 - 연관된 그룹핑 또는 행 요소를 필요로 하며, 전개 - 연관된 전개 요소 또는 컬럼 요소를 필요로 하며, 집계 - 연관된 집계 요소와 집계 함수를 필요로 한다 여기선 각 직원ID마다 결과를 하나의 행으로 출력 (그룹핑) 고객ID별로 수량..
윈도우 함수 : 순위, 오프셋, 집계 윈도우 함수 (Window function) 쿼리를 기반으로 하는 각 행들의 윈도우 (집합)에 대해 연산을 하거나, 이 행들을 이용해서 계산 후 스칼라 (단일) 결과값을 출력하는 함수. 윈도우 행들의 서브집합. 현재 행과 관련된 윈도우 설정을 기반으로 한다. 서브쿼리처럼 집합에 대해 연산을 수행할 수 있지만, 서브쿼리는 데이터에 대한 뷰를 대상으로 연산한다는 점에서 차이. 필요에 따라 결과집합의 관계형 측면을 훼손시키지 않으면서도 계산 작업의 일부로 순서를 정의할 수 있게 해 준다. SELECT a.SalesOrderID , CONVERT(varchar, a.ModifiedDate, 112) as date , a.LineTotal , SUM(linetotal) OVER ( PARTITION BY sale..
TOP, OFFSET-FETCH 필터 - 리턴되는 행의 수 제한 TOP SQL Server 7.0부터 지원 쿼리가 반환하는 결과 중 특정 행의 수나 퍼센트만으로 제한. 현재 Data 수는 295개 - 5개의 행 리턴 SELECT TOP 5 * FROM SalesLT.Product - 10퍼센트의 행 리턴 : 총 295개 중 10% 29.5 -> 올림 해서 30개를 조회한다. : 16퍼센트 > 47.2 -> 48개를 조회한다. SELECT TOP 10 PERCENT * FROM SalesLT.Product -- 10 퍼센트만 조회 WITH TIES 동일한 값을 가지는 행을 출력하게 할때 사용한다. 10개를 조회해도, 동일한 값이 있으면 조회한다. (테스트를 위해 좀 극단적인 데이터를 조회했음.) SELECT TOP 10 WITH TIES * FROM SalesLT.Pr..

반응형