MSSQL에서 쿼리 결과를 파일로 저장하기디비 2012. 12. 6. 22:58 bcp라는 내장 툴을 이용하여 쿼리 결과를 파일로 저장시키면 된다. xp_cmdshell을 켜야 하기 때문에, 보안 레벨이 낮아지므로 적절히 판단하여야 한다. Bcp 옵션 -T 신뢰하는 인증 -w 유니코드 형태로 출력 -r 파일 저장시 캐리지 리턴을 제거 sp_configure 'show advanced options', 1; GO RECONFIGURE; go sp_configure 'xp_cmdshell', 1; RECONFIGURE; GO xp_cmdshell ' bcp "SELECT * from Idol_GameDB.dbo.RefTraining for xml auto, ROOT" queryout "RefTraining.txt" -r -w -T'공유하기 게시글 관리 구독하기약올라의 Why? What? How?Posted by 약올랑 Comment 0 Name Password Homepage Secret SELECT COLLUMN1, COLLUMN2, COLLUMN3, INTO OUTFILE "~/파일명.확장자" FIELDS TERMINATED BY ',' FROM 테이블명 및 WHERE, AND 절 조건문 설정후 ㄱㄱ ex) SELECT USER_ID, USER_NAME, USER_PASSWD INTO OUTFILE "/usr/local/TEXTCSV.csv" FIELDS TERMINATED BY ',' FROM USER WHER USER_ID='test' AND USER_PASSWD='1234' 안냐세염. 까막임돠... 회사에서 업무를 수행하다 보니 나오게된 결과물 입니다. 유틸리티성으로 만들게된 것인데 제목 그대로 테이블만 별도 파일로 떨구거나, 혹은 수행한 쿼리문의 결과를 파일로 저장하는 기능 1. 알려진 사용상의 단점 A. 위의 그림에서 보신바와 같이 테이블내에 혹은 수행된 쿼리 결과내에 여러개의 BLOB 형식의 데이터가 위치와 상관없이 B. 테이블을 백업하였을 경우는 테이블의 자료구조가 100% 정확하게 파일에 설정되지만, 쿼리의 수행결과를 파일로 저장할 경우는 백업 기능을 이용 -BACKUP -TABLE sysindexes 로 저장한 것과 반대로, -EXPORT 형태로 저장했을 경우는 해당 MSSQL 버전의 특정 자료형에 구속되지 않기 때문에 다른 버전의 MSSQL에도 C. 파일에 특정한 보안 로직이나 권한 제한등이 없기 때문에 외부로 유출되었을 경우 누구나 DB에 로딩 시킬 수 있습니다. D. 데이터파일에 대한 압축 기능이 제공되지 않습니다. (보완해야할 대표적인 기능중에 2번째) 2. 알려진 사용상의 장점 하나더 라고 한다면, 흠.. 쓸만할 만큼은 충분히 빠릅니다. GUI 툴처럼 복잡하지도 않고, BCP 처럼 다양한 옵션을 지원하진 않지만. <이어진 화면> 위의 그림에서 처럼, 생성시 넣어준 정보와 간단한 디스크립션, 컬럼 정보 및 저장된 내용중 첫번째 데이터를 출력해 줍니다. 특별하게 설치할건 없고, 실행파일 하나와 DLL 두개로 구성되어 있어서 그냥 압축 풀고 사용하시면 됩니다. 사용상의 문제점이나 활용 방안에 대한 의견이 있으시면 개발하는데 많은 도움이 되겠습니다. ^^; sqlcmd을 사용하는 것은 장애 발생시 보통 사용하게 된다. 그래서 아래와 같이 sqcmd로 접속하여 쿼리를 수행할때 해당 결과를 txt 파일로 저장하는 방법이 있다. 예) 또는 C:\Windows\system32>sqlcmd -E -Ss2012sql -o c:\txt.txt [기술문서]
반응형
CSV 파일 INSERT
1. 결과 데이터 CSV/TXT 파일로 저장
결과창 마우스 우클릭하여 "다른 이름으로 결과 저장" 선택 후 원하는 경로에 저장한다.
결과 창 마우스 우클릭
파일 이름, 형식 지정 후 저장
2. BULK INSERT를 통해서 CSV/TXT 파일 INSERT
FIELDTERMINATOR, ROWTERMINATOR... 외에도 여러 옵션이 존재합니다. 아래 페이지를 참고해주세요.
https://docs.microsoft.com/ko-kr/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15
3. 결과 확인
결과 데이터
참고
BULK INSERT 외에도 DTS(Data Transformation Services) 서비스를 통해서 TXT/CSV/EXCEL 파일 등을 가져오는 방법도 있습니다. 이는 다음 포스팅에 작성해보도록 하겠습니다.
반응형 공유하기 게시글 관리 구독하기초보개발자꽁쥐'프로그래밍 > MSSQL' 카테고리의 다른 글[MSSQL] RECOMPILE 저장 프로시저 리컴파일 (c# 프로시저 timeout 에러) (0)2020.01.30[MSSQL] NOT MATCHED BY SOURCE ('DELETE' 유형의 동작은 MERGE 문의 'WHEN NOT MATCHED' 절에 사용할 수 없습니다.) (0)2020.01.07[MSSQL] 사용자 정의 데이터 형식을 이용한 프로시저 집합기반 처리 (프로시저 테이블 파라미터 TVP) (0)2019.12.17[MSSQL] 트랜잭션 로그 보기 (0)2019.12.16[MSSQL] 로그인 등록/수정/삭제 (오류 암호의 유효성을 검사하지 못했습니다.) (0)2019.12.10 |