BCP 사용
- Version : SQL Server 2000, 2005, 2008, 2008R2, 2012
대량의 데이터를 내보내기 위한 방법에는 여러가지가 있다. SSIS를 이용하여 데이터를 내보낼 수도 있고 조회된 결과를 다른 이름으로 저장하여 파일로 저장 할 수도 있다. 하지만 대량의 데이터를 쉽고 빠르게 파일로 내보낼 수는 없을까?
BCP를 사용하면 쉽고 빠르게 작업 할 수가 있다.
BCP 유틸리티(BCP.exe)는 BCP(Bulk Copy Data) API를 사용하는 명령줄 도구이다. BCP는 다음과 같은 기능을 수행 할 수 있다.
데이터 파일로 SQL Server 테이블의 데이터를 대량으로 내보낸다.
쿼리의 데이터를 대량으로 내보낸다.
SQL server 테이블로 데이터 파일의 데이터를 대량으로 가져온다.
서식 파일을 생성한다.
BCP를 사용할 때 다양한 옵션이 매우 많다. 자세한 내용은 MSDN을 참고 하길 바란다.
BCP : http://msdn.microsoft.com/ko-kr/library/ms162802.aspx
[SSMS에서 BCP를 사용하여 데이터 내보내기]
SSMS의 쿼리창에서 BCP 명령어 쿼리를 실행 한다. 이때 xp_cmdshell 모드를 사용해야 하므로 SQL Server 환경 옵션에서 xp_cmdshell 옵션을 활성화 해야 한다.
SP_CONFIGURE 'XP_CMDSHELL', 1 GO
RECONFIGURE WITH OVERRIDE GO
SP_CONFIGURE GO
|
쿼리창에서 BCP 명령을 실행 한다. 실습에서는 AdventureWorks 데이터베이스의 Person.Contact 테이블을 사용하였다.
EXEC xp_cmdshell 'bcp "SELECT * FROM AdventureWorks.Person.Contact" queryout "D:\BCPTest.txt" -S -T -c' |
실행이 완료되면 다음과 같이 저장경로에 파일이 생성된 것을 확인 할 수 있다.
[CMD 유틸리티에서 BCP를 사용하여 데이터 내보내기]
[실행] – [CMD]를 하여 커맨드 창에서 다음과 같이 명령어를 입력 한다.
bcp AdventureWorks.Person.Contact out D:\BCPTest2.txt -T -c |
BCPTest2.TXT 라는 텍스트 파일로 저장된 것을 확인 할 수 있다.
BCP를 활용하는 방안은 매우 많다. 나의 경우에는 해외 데이터를 DW로 수집할 때 직접 링크드 서버로 가져오지 않고(매우 느리며 보안 문제로 접근 허용을 하지 않느다.) BCP로 텍스트 데이터를 내려 받아 FTP등으로 전달 받아 DW로 복원하여 분석을 할 때 사용한다.
2012-01-08 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
DMV에서 SQL Server 리소스 데이터베이스 값 (0) | 2015.07.20 |
---|---|
키워드로 PROCEDURE, FUNCTION 찾기 (0) | 2015.07.20 |
DATEADD를 사용한 날짜 추가 및 빼기 (0) | 2015.07.20 |
Change Data Capture(CDC) – 변경 이력 추적 (0) | 2015.07.20 |
SSMS 에서 디버깅 하기 (0) | 2015.07.20 |