SQL Server/SQL Server Tip

BCP 사용

SungWookKang 2015. 7. 20. 09:37
반응형

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

 

 

반응형