본문 바로가기
IT 및 기타

[SQL Server] 배치 파일에서 bcp 명령어로 레코드 내보내기

by 도쿄정대리! 2021. 7. 29.

안녕하세요 배치파일을 사용할 일이 종종 있는데요. bcp 명령어를 이용하여 대용량의 데이터를 내보내거나, 입력을 하는 경우가 있습니다. 예시와 함께 방법을 알아 보도록 하겠습니다.

 

목차

    bcp란?

    데이터 베이스의 자료를 SQL server에 입력할때 사용하는 기능입니다. 대용량의 파일을 업데이트 하거나 다운로드를 할때 사용하는 대용량 데이터 전용 기능으로 생각하하면 편하겠습니다. 주로 배치 파일(Batch File)에서 사용되게 됩니다. 배치 파일이란 MS-DOS의 명령문들을 한번에 실행 할 수 있는 명령어 스크립트로 여러가지의 작업을 한번에 실행하기에 용이합니다.

     

    샘플 프로그램의 개요

    bcp명령을 사용하여 다음 테이블"EMPLOYEE"의 레코드를 csv파일로 내보냅니다.

     

    배치 파일의 내용코드

    @echo off
    REM서버 이름(서버의 PC이름\인스턴스 이름)
    set dbServer=localhost\SQLEXPRESS
    REM데이터베이스 이름
    set dbName=sampleDB
    REM사용자 이름
    REM set userName=sampleUser
    REM패스워드
    REM set password=password
    REM출력 폴더
    set outputFolder=C:\Users\user\Desktop\sqlserver_sample\export\
    REM #####################
    REM Windows인증의 경우
    REM #####################
    REM★ 테이블 이름만 지정하고 전 기록을 취득한다
    bcp EMPLOYEE out %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -T -c -t ","
    REM★ SELECT문을 지정하고 조건에 합치한 레코드를 취득한다
    REM bcp "SELECT TOP(1) * FROM EMPLOYEE" queryout %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -T -c -t ","
    REM #####################
    REM SQL Server인증의 경우
    REM #####################
    REM★ 테이블 이름만 지정하고 전 기록을 취득한다
    REM bcp EMPLOYEE out %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -U %userName% -P %password% -c -t ","
    REM★ SELECT문을 지정하고 조건에 합치한 레코드를 취득했다
    REM bcp "SELECT TOP(1) * FROM EMPLOYEE" queryout %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -U %userName% -P %password% -c -t ","
    
    pause

     

    배치 파일 실행

    복사를 시작합니다...
    
    2 행이 복사되었습니다。
    네트워크 패킷 사이즈 (바이트): 4096
    클락 타임 (밀리초) 합계     : 1      평균 : (2000.00 行/秒)
    계속하기 위해서는 키를 눌러주세요 . . .

     

    결과

    변환된 csv파일을 텍스트 에디터로 열면 아래의 레코드가 출력된 것을 확인할 수 있습니다.

    00001,鈴木一郎,男,営業課
    00002,佐藤次郎,男,経理課

     

    bcp 기능을 이용하여 데이터베이스 및 테스트를 하는 경우가 많이 있습니다.

    특히 일본에서 배치 프로그램을 개발하고 있으시면 더욱 그렇겠습니다. 그럼 여러분의 코드에 에러가 없기를 기원하면서 마치겠습니다.

    반응형

    댓글