BCP 사용

jevida(강성욱) 2016.09.13 06:59 Views : 3621

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로 복원하여 분석을 할 때 사용한다.

 



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 23408
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12412
1714 DMV를 이용한 SQL Server 성능 카운터 확인 jevida(강성욱) 2016.09.13 1895
1713 DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기 jevida(강성욱) 2016.09.13 1284
1712 DMV를 활용한 SQL Server 모니터링 jevida(강성욱) 2016.09.13 1355
1711 세션에 따른 캐시된 쿼리 플랜 설정 확인 jevida(강성욱) 2016.09.13 913
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 769
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 3123
1708 Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1390
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1112
1706 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1657
» BCP 사용 jevida(강성욱) 2016.09.13 3621
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1188
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 3088
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 9523
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1729
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1687
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 1972
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1687
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 726
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1928
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 11680





XE Login