데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

BCP 사용

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

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
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 713
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 2909
1708 Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1278
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1061
1706 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1541
» BCP 사용 jevida(강성욱) 2016.09.13 3282
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1153
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 2372
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 6326
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1537
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1602
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 1706
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1570
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 702
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1772
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 10654
1694 SQL Server SP_Congifure 변경 사항 캡처 jevida(강성욱) 2016.09.13 2061
1693 SQL Server Net Libraries jevida(강성욱) 2016.09.13 1103
1692 SQL Server 별칭 설정 및 사용 jevida(강성욱) 2016.09.13 2563
1691 SQL Server에 연결된 어플리케이션 드라이버 버전 확인 jevida(강성욱) 2016.09.13 864





XE Login