적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 데이터베이스
bcp(대량 복사 프로그램 유틸리티)는 SQL Server 인스턴스와 데이터 파일 간에 사용자가 지정한 형식으로 데이터를 대량 복사합니다.
bcp 유틸리티를 사용하여 많은 수의 새 행을 SQL Server 테이블로 가져오거나 테이블에서 데이터 파일로 데이터를 내보냅니다.
queryout 옵션과 함께 사용하는 경우를 제외하고 이 유틸리티를 사용하는 데에는 Transact-SQL에 대한 지식이 필요하지 않습니다. 데이터를 테이블로 가져오려면 해당 테이블에 대해 만든 서식 파일을 사용하거나 테이블의 구조와 해당 열에 유효한 데이터 형식을 이해해야 합니다.
시스템에 설치된 bcp 버전, 시스템 요구 사항 및 bcp를 가져오는 방법에 대한 자세한 내용은 bcp 유틸리티 다운로드 및 설치를 참조하세요.
메모
bcp 데이터 파일에는 스키마 또는 형식 정보가 포함되지 않습니다. bcp를 사용하여 데이터를 백업한 다음 나중에 원본 테이블을 삭제하거나 변경하는 경우 데이터를 다시 가져오려면 동일한 테이블 정의 또는 서식 파일이 필요합니다.
bcp 구문에 사용되는 구문 규칙은 Transact-SQL 구문 규칙(Transact-SQL)을 참조하세요.
bcp를 사용하는 방법
예제 명령을 포함하여 bcp를 사용하는 방법에 대한 자세한 내용은 bcp 유틸리티를 사용하는 방법을 참조하세요.
Linux 및 macOS에서 bcp 사용
macOS 및 Linux에 명령줄 도구를 설치하는 방법에 대한 자세한 내용은 Linux에 sqlcmd 및 bcp SQL Server 명령줄 도구 설치를 참조하세요.
Linux 및 macOS의 bcp에 대한 고려 사항
필드 종결자는 탭(
\t)입니다.줄 종결자는 줄 바꿈 문자(
\n)입니다.SQL Server에서 SQL Server로 전송하려면 네이티브 형식(
-n)을 사용합니다. 데이터가 SQL Server가 아닌 시스템으로 교차하거나 데이터 파일에 확장 문자가 포함되지 않아야 하는 경우에만 문자 형식(-c)을 사용합니다. 자세한 내용은 문자 모드 및 기본 모드 모범 사례를 참조하세요.명령줄 인수에서 백슬래시(
\)를 인용하거나 이스케이프해야 합니다. 예를 들어 줄 바꿈을 사용자 지정 행 종결자로 지정하려면 다음 메커니즘 중 하나를 사용합니다.-r\\n-r"\n"-r'\n'
TDS 8.0 지원
SQL Server 2025(17.x)는 bcp 유틸리티에 대한 TDS 8.0 지원을 도입했습니다.
Syntax
bcp [ database_name. ] schema. { table_name | view_name | "query" }
{ in data_file | out data_file | queryout data_file | format nul }
[ -a packet_size ]
[ -b batch_size ]
[ -c ]
[ -C { ACP | OEM | RAW | code_page } ]
[ -d database_name ]
[ -D ]
[ -e err_file ]
[ -E ]
[ -f format_file ]
[ -F first_row ]
[ -G Microsoft Entra authentication ]
[ -h"hint [ , ...n ] " ]
[ -i input_file ]
[ -k ]
[ -K application_intent ]
[ -l login_timeout ]
[ -L last_row ]
[ -m max_errors ]
[ -n ]
[ -N ]
[ -o output_file ]
[ -P password ]
[ -q ]
[ -r row_term ]
[ -R ]
[ -S [ server_name [ \instance_name ] ] ]
[ -t field_term ]
[ -T ]
[ -U login_id ]
[ -u ]
[ -v ]
[ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
[ -w ]
[ -x ]
[ -Y [ s | m | o ] ]
[ -z ]
명령줄 옵션
다음 표에서는 bcp사용할 수 있는 명령줄 옵션과 지원하는 운영 체제를 나열합니다.
| 명령줄 옵션 | Windows에서 지원됨 | Linux 및 macOS에서 지원됨 |
|---|---|---|
| 개체 및 전송 모드 | ||
| [database_name.]스키마.{table_name | view_name | "query"} | 예 | 예 |
| {indata_file | outdata_file | queryoutdata_file | format nul} | 예 | 예 |
| -q | 예 | 예 |
| 연결 및 인증 | ||
| -S [server_name[\instance_name]] | 예 | 예 |
| -d database_name | 예 | 예 |
| -U login_id | 예 | 예 |
| -P 암호 | 예 | 예 |
| -G Microsoft Entra 인증 | 예 | 예 |
| -D | 예 | 예 |
| -K application_intent | 예 | 예 |
| -l login_timeout | 예 | 예 |
| -T | 예 | 예 |
| -Y[s| m| o] | 예 1 | 예 1 |
| 데이터 표현 | ||
| -c | 예 | 예 |
| -C { ACP | OEM | RAW | code_page } | 예 | No |
| -n | 예 | 예 |
| -N | 예 | No |
| -w | 예 | 예 |
| -z | No | 예 2 |
| 파일 서식 지정 | ||
| -f format_file | 예 | 예 |
| -x | 예 | No |
| 일괄 처리 및 성능 | ||
| -a packet_size | 예 | 예 |
| -b batch_size | 예 | 예 |
| -h"hint [,... n]" | 예 | No |
| -m max_errors | 예 | 예 |
| -F first_row | 예 | 예 |
| -L last_row | 예 | 예 |
| -r row_term | 예 | 예 |
| -t field_term | 예 | 예 |
| 값 처리 | ||
| -k | 예 | 예 |
| -E | 예 | 예 |
| 파일 I/O 및 로깅 | ||
| -i input_file | 예 | No |
| -o output_file | 예 | No |
| -e err_file | 예 | 예 |
| 호환성 및 버전 관리 | ||
| -V(80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) | 예 | No |
| -u | 예 1 | 예 1 |
| 기타 옵션 | ||
| -R | 예 | 예 |
| -v | 예 | 예 |
1 SQL Server 2025(17.x)와 함께 제공되는 bcp 버전 18 이상이 필요합니다.
2 ODBC 18.6.1.1 이상 버전.
개체 및 전송 모드
database_name
지정된 테이블 또는 뷰를 포함하는 데이터베이스의 이름입니다. 이 매개 변수를 지정하지 않으면 사용자의 기본 데이터베이스가 사용됩니다.
-d를 사용하여 데이터베이스 이름을 명시적으로 지정할 수도 있습니다.
schema
테이블 또는 보기의 소유자 이름입니다. 작업을 수행하는 사용자가 지정한 테이블 또는 뷰를 소유하고 있는 경우에는schema는 선택 사항입니다. 스키마를 지정하지 않고 작업을 수행하는 사용자가 지정한 테이블이나 뷰를 소유하지 않는 경우 SQL Server는 오류 메시지를 반환하고 작업이 취소됩니다.
table_name
데이터를 SQL Server(in)로 가져올 때는 대상 테이블의 이름, SQL Server(out)에서 데이터를 내보낼 때는 소스 테이블의 이름입니다.
view_name
SQL Server 로 데이터를 복사할 때(in)는 대상 보기의 이름이고 SQL Server 에서 데이터를 복사할 때(out)는 원본 보기의 이름입니다. 대상(in)으로 사용되는 경우 뷰는 모든 열이 동일한 테이블을 참조하는 경우에만 지원됩니다. 이 제한은 뷰가 원본(out)으로 사용되는 경우 적용되지 않습니다. 뷰에 데이터를 복사하는 경우의 제한 사항에 대한 자세한 내용은 INSERT를 참조하세요.
"query"
결과 집합을 반환하는 Transact-SQL 쿼리입니다. 쿼리에서 여러 결과 집합을 반환하는 경우 첫 번째 결과 집합만 데이터 파일에 복사되고 그 다음 결과 집합은 무시됩니다. 쿼리는 큰따옴표로 묶고 쿼리 안에 포함되는 모든 것은 작은따옴표로 묶습니다. 쿼리에서 데이터를 대량 복사할 때도 지정 queryout 해야 합니다.
쿼리는 bcp 문을 실행하기 전에 저장 프로시저 내에서 참조되는 모든 테이블이 존재하는 한 저장 프로시저를 참조할 수 있습니다. 예를 들어 저장 프로시저가 임시 테이블을 생성하면 이 임시 테이블을 런타임에만 사용할 수 있고 문 실행 시에는 사용할 수 없기 때문에 bcp 문이 실패합니다. 이 경우 테이블에 저장 프로시저 결과를 삽입한 다음 bcp 를 사용하여 테이블에서 데이터 파일로 데이터를 복사할 수 있습니다.
안에
파일의 데이터를 데이터베이스 테이블 또는 뷰로 복사합니다. 대량 복사의 방향을 지정합니다.
밖에
데이터베이스 테이블 또는 뷰에서 파일로 데이터를 복사합니다. 대량 복사의 방향을 지정합니다.
기존 파일을 지정하면 이 파일을 덮어씁니다. bcp 유틸리티는 데이터를 추출할 때 빈 문자열을 null로 나타내고 null 문자열을 빈 문자열로 나타냅니다.
data_file
데이터 파일의 전체 경로입니다. SQL Server로 데이터를 대량으로 가져오는 경우 데이터 파일에는 지정된 테이블 또는 뷰에 복사할 데이터가 포함됩니다. SQL Server에서 데이터를 대량으로 내보내는 경우 데이터 파일에는 테이블 또는 뷰에서 복사한 데이터가 포함됩니다. 데이터 파일 경로는 1에서 255자까지 포함할 수 있습니다. 데이터 파일에는 최대 2^63 - 1개의 행이 포함될 수 있습니다.
queryout
쿼리에서 데이터를 복사하며 쿼리에서 데이터를 대량 복사하는 경우에만 지정해야 합니다.
format
지정된 옵션(-n, -c, -w 또는 -N)과 테이블 또는 보기 구분 기호에 따라 형식 파일을 만듭니다. 데이터를 대량 복사하는 경우 bcp 명령은 서식 파일을 참조할 수 있으므로 대화형으로 서식 정보를 다시 입력할 필요가 없습니다. 이 format 옵션을 사용하려면 이 옵션이 필요합니다 -f . XML 서식 파일을 만들려면 이 옵션도 필요합니다 -x . 자세한 내용은 bcp를 사용하여 서식 파일 만들기(SQL Server)를 참조하세요.
nul을 값(format nul)으로 지정해야 합니다.
-q
SET QUOTED_IDENTIFIER ON 유틸리티와 SQL Server 인스턴스 간의 연결에서 문을 실행합니다. 이 옵션을 사용하여 공백이나 작은따옴표를 포함하는 데이터베이스, 소유자, 테이블 또는 뷰 이름을 지정합니다. 세 부분으로 구성된 테이블 또는 뷰 이름 전체를 따옴표("")로 묶습니다.
공백이나 작은따옴표가 들어 있는 데이터베이스 이름을 지정하려면 -q 옵션을 사용해야 합니다.
-q는 -d로 전달된 값에는 적용되지 않습니다.
자세한 내용은 이 문서의 설명 섹션을 참조하세요.
연결 및 인증
-S [server_name[\instance_name]]
연결할 SQL Server 인스턴스의 이름을 지정하거나, -D을(를) 사용하여 DSN을 지정합니다.
서버를 지정하지 않으면 bcp 유틸리티가 로컬 컴퓨터의 SQL Server 기본 인스턴스에 연결됩니다. 네트워크의 원격 컴퓨터 또는 로컬 명명된 인스턴스에서 bcp 명령을 실행할 때 이 옵션이 필요합니다. 서버에 있는 기본 SQL Server 인스턴스에 연결하려면 server_name만 지정합니다. SQL Server의 명명된 인스턴스에 연결하려면 .를 지정합니다 <server_name>\<instance_name>.
-d database_name
연결할 데이터베이스를 지정합니다. 기본적으로 bcp 는 기본 데이터베이스에 연결합니다.
-d <database_name>에 첫 번째 매개 변수로 전달된 세 부분으로 구성된 이름(database_name.schema.table)을 지정 하면 데이터베이스 이름을 두 번 지정할 수 없기 때문에 오류가 발생합니다.
database_name이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -d와 데이터베이스 이름 사이에 공백을 추가하지 않습니다.
-U login_id
SQL Server 연결에 사용하는 로그인 ID를 지정합니다.
-P 비밀번호
로그인 ID의 암호를 지정합니다. 이 옵션을 사용하지 않으면 bcp 명령에서 암호를 묻는 메시지를 표시합니다. 명령 프롬프트의 끝에서 암호 없이 이 옵션을 사용하는 경우 bcp 는 기본 암호(NULL)를 사용합니다.
Important
빈 비밀번호를 사용하지 마세요. 강력한 비밀번호를 사용하세요.
비밀번호를 마스킹하려면 -P 옵션과 함께 -U 옵션을 지정하지 않습니다. 대신 bcp와 -U 옵션 및 기타 스위치를 지정한 후(지정 -P하지 않음) Enter 키를 누르면 명령이 암호를 입력하라고 요청합니다. 이 방법을 사용하면 비밀번호 입력 시 비밀번호가 마스킹됩니다.
password가 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -P와 password 값 사이에 공백을 포함하지 않습니다.
Linux 및 macOS에서 -U 없이 -G 옵션을 사용할 때, -P는 Microsoft Entra 액세스 토큰(v17.8 이상 버전)이 포함된 파일을 지정합니다. 토큰 파일은 UTF-16LE(BOM 없음) 형식이어야 합니다. 자세한 내용은 bcp에서 Microsoft Entra ID로 인증을 참조하세요.
-G
적용 대상: Azure SQL Database, Azure SQL Managed Instance, Microsoft Fabric의 SQL 데이터베이스, Azure Synapse Analytics 및 SQL Server 2022(16.x) 이상 버전.
이 스위치는 클라이언트에서 사용자가 Microsoft Entra ID로 인증되도록 지정하는 데 사용됩니다. 스위치에는 -Gbcp 버전 14.0.3008.27 이상이 필요합니다. 사용 중인 버전을 확인하려면 bcp -v를 실행합니다. 자세한 내용은 SQL Database 또는 Azure Synapse Analytics에서 Microsoft Entra 인증 사용 또는 Microsoft Fabric의 SQL 데이터베이스 인증을 참조하세요.
bcp의 Microsoft Entra 인증에 대한 자세한 내용은 bcp에서 Microsoft Entra ID로 인증을 참조하세요.
-D
bcp -S 옵션에 전달된 값이 DSN(데이터 원본 이름)으로 해석되도록 합니다.
-D 명령줄의 아무 곳에나 표시할 수 있습니다. 기준으로 -S 정렬하는 것은 중요하지 않습니다.
DSN을 사용하여 다음을 수행할 수 있습니다.
- 명령줄을 간소화하는 드라이버 옵션을 포함합니다.
- 명령줄에서 액세스할 수 없는 드라이버 옵션(예:
MultiSubnetFailover.)을 적용합니다. - 중요한 자격 증명이 명령줄 인수로 검색되지 않도록 보호합니다.
자세한 내용은 sqlcmd 및 bcp의 DSN 지원을 참조하세요.
-K 애플리케이션_의도
서버에 연결할 때 애플리케이션 작업 유형을 선언합니다. 가능한 유일한 값은 ReadOnly입니다. 지정 -K하지 않으면 bcp 유틸리티는 Always On 가용성 그룹의 보조 복제본에 대한 연결을 지원하지 않습니다. 자세한 내용은 Always On 가용성 그룹의 보조 복제본으로 읽기 전용 워크로드 오프로드를 참조하세요.
-l login_timeout
로그인 시간 제한을 지정합니다.
-l 옵션은 서버에 연결하려고 할 때 SQL Server 로그인 시간이 초과되기 전까지의 시간(초)을 지정합니다. 기본 로그인 제한 시간은 15초입니다. 로그인 제한 시간은 0에서 65534 사이의 숫자여야 합니다. 제공한 값이 숫자가 아니거나 해당 범위에 속하지 않으면 bcp 에서 오류 메시지를 생성합니다. 값 0은 무한 시간 제한을 지정합니다.
-T
bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server 로 연결되도록 지정합니다. 네트워크 사용자의 보안 자격 증명, login_id 및 password는 필요하지 않습니다.
-T을(를) 지정하지 않으면, -U과(와) -P을(를) 지정하여 성공적으로 연결해야 합니다.
Important
Windows 통합 신뢰할 수 있는 연결을 사용하여 SQL Server에 연결할 때만 사용합니다 -T . Azure SQL Database 또는 Azure Synapse Analytics -T 에 연결하는 경우(Windows 통합 인증)는 지원되지 않습니다. Azure 서비스 또는 SQL Server 2022(16.x) 이상 버전에 대한 Microsoft Entra 인증의 경우 (-G 참조)을 사용합니다 .
-Y[s|m|o]
적용 대상: SQL Server 2025(17.x)와 함께 제공되는 bcp 버전 18 이상 버전.
연결이 네트워크를 통해 TLS 암호화를 사용하는지 여부를 지정합니다.
-Y은 o (이는 Optional의 경우), m (이는 Mandatory의 경우, 기본값) 또는 s (이는 Strict의 경우)일 수 있습니다.
-Y을 포함하지 않으면 Mandatory 용 -Ym가 기본값입니다.
-u
적용 대상: SQL Server 2025(17.x)와 함께 제공되는 bcp 버전 18 이상 버전.
서버 인증서를 신뢰합니다. 연결에 대한 암호화 옵션과 함께 사용하는 경우 자체 서명된 서버 인증서를 사용하여 암호화를 사용하도록 설정합니다.
데이터 표현
-c
문자 데이터 형식을 사용하여 작업을 수행합니다. 이 옵션은 필드마다 메시지를 표시하지 않습니다. 접두사 없이 char를 스토리지 형식으로 사용하고(탭 문자)를 필드 구분 기호 \t 로 사용하고(줄 바꿈 문자)를 행 종결자로 사용합니다 \r\n .
-c는 -w와 호환되지 않습니다.
자세한 내용은 문자 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.
모범 사례는 문자 모드 및 기본 모드 모범 사례를 참조하세요.
-C { ACP | OEM | RAW | code_page }
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
데이터 파일에서 데이터의 코드 페이지를 지정합니다. code_page 는 문자 값이 127보다 크거나 32보다 작은 char, varchar또는 text 열이 데이터에 포함된 경우에만 적합합니다.
65001 옵션이 데이터 정렬 또는 코드 페이지 사양보다 우선 순위를 가지도록 하려는 경우를 제외하고 서식 파일의 각 열에 대한 데이터 정렬 이름을 지정합니다.
| 코드 페이지 값 | Description |
|---|---|
ACP |
ANSI/Microsoft Windows(ISO 1252)입니다. |
OEM |
클라이언트가 사용하는 기본 코드 페이지입니다. 지정 -C하지 않으면 이 코드 페이지가 기본값입니다. |
RAW |
코드 페이지 간 변환이 일어나지 않습니다. 이 옵션은 변환이 발생하지 않으므로 가장 빠릅니다. |
<code_page> |
850과 같은 특정 코드 페이지 번호입니다. SQL Server 2016 이전 버전(13.x)은 코드 페이지 65001(UTF-8 인코딩)을 지원하지 않습니다. 버전 13부터 UTF-8 인코딩을 SQL Server이전 버전으로 가져올 수 있습니다. |
-n
데이터의 네이티브(데이터베이스) 데이터 형식을 사용하여 대량 복사 작업을 수행합니다. 이 옵션은 각 필드에 대한 메시지를 표시하지 않습니다. 네이티브 값을 사용합니다.
자세한 내용은 원시 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.
모범 사례는 문자 모드 및 기본 모드 모범 사례를 참조하세요.
-N
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
문자가 아닌 데이터의 경우 데이터의 네이티브(데이터베이스) 데이터 형식을 사용하고 문자 데이터의 경우 유니코드 문자를 사용하여 대량 복사 작업을 수행합니다. 이 옵션은 -w 옵션을 사용할 때보다 성능이 높으며 데이터 파일을 사용하여 SQL Server 인스턴스 간에 데이터를 전송할 때 사용할 수 있습니다. 이 옵션은 각 필드에 대한 정보를 요청하지 않습니다. ANSI 확장 문자가 들어 있는 데이터를 전송하는 경우 기본 모드의 성능을 활용하려고 할 때 이 옵션을 사용하세요.
자세한 내용은 유니코드 원시 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.
과 함께 -N를 사용하여 동일한 테이블 스키마에 데이터를 내보낸 다음 가져올 경우 유니코드를 지원하지 않는 고정 길이 문자 열(예시: char(10))이 있으면 잘림 경고가 표시될 수 있습니다.
경고를 무시할 수 있습니다.
-n 대신 -N을 사용하여 이 경고를 해결할 수 있습니다.
-w
유니코드 문자를 사용하여 대량 복사 작업을 수행합니다. 이 옵션은 각 필드에 대한 메시지를 표시하지 않습니다.
nchar를 스토리지 형식으로 사용하고 접두사 \t 없음(탭 문자)을 필드 구분 기호로 사용하고 \n (줄 바꿈 문자)를 행 종결자로 사용합니다.
-w는 -c와 호환되지 않습니다.
자세한 내용은 유니코드 문자 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.
-z
적용 대상: bcp (ODBC), Linux 및 macOS만 해당합니다. Windows는 지원되지 않습니다.
bcp 유틸리티에서 벡터 데이터 형식 지원을 사용하도록 설정합니다. 이 기능은 현재 기본적으로 사용하지 않도록 설정되어 있습니다. 사용하지 않도록 설정하면 벡터 데이터를 JSON float 배열 문자열로 가져오거나 내보냅니다. 사용하도록 설정하고 SQL Server 2025(17.x) 이상 버전에 연결할 때 벡터 데이터를 네이티브 벡터 이진 파일로 가져오거나 내보냅니다.
파일 서식 지정
-f format_file
서식 파일의 전체 경로를 지정합니다. 다음과 같이 이 옵션의 의미는 해당 환경에 따라 다릅니다.
지정된 테이블 및 뷰에 대해
-f옵션과format을(를) 사용할 경우, 지정된 format_file이(가) 생성됩니다. XML 서식 파일을 만들려면-x옵션도 지정합니다. 자세한 내용은 bcp를 사용하여 서식 파일 만들기(SQL Server)를 참조하세요.또는
-f옵션과in함께 사용하는out경우 기존 서식 파일이 필요합니다.메모
또는
in옵션과 함께out서식 파일을 사용하는 것은 선택 사항입니다. 옵션을 지정하지 않고-f및-n,-c,-w,-N를 지정하지 않으면 명령 프롬프트는 형식 정보를 요청하고, 응답을 서식 파일에 저장할 수 있습니다. 기본 파일 이름은 .입니다bcp.fmt.
format_file 이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -f와 format_file 값 사이에 공백을 포함하지 않습니다.
-x
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
format 및 -fformat_file 옵션과 함께 이 옵션을 사용합니다. 기본 비 XML 서식 파일 대신 XML 기반 서식 파일을 생성합니다. 데이터를 가져오거나 내보낼 때는 이 -x 옵션이 작동하지 않습니다.
format 및 -fformat_file을 함께 사용하지 않으면 오류가 발생합니다.
일괄 처리 및 성능
-a packet_size
클라이언트가 서버에서 보내고 받는 네트워크 패킷당 바이트 수를 지정합니다. SQL Server Management Studio 또는 시스템 저장 프로시저를 sp_configure 사용하여 이 서버 구성 옵션을 설정합니다. 그러나 이 옵션을 사용하여 서버 구성 옵션을 개별적으로 재정의할 수 있습니다.
packet_size 4,096바이트에서 65,535바이트까지 가능합니다. 기본값은 4096입니다.
패킷 크기를 늘리면 대량 복사 작업의 성능이 향상될 수 있습니다. 더 큰 패킷을 요청하지만 서버에서 부여할 수 없는 경우 기본값이 사용됩니다. bcp 유틸리티에서 생성하는 성능 통계는 사용된 패킷 크기를 보여 줍니다.
-b batch_size
가져온 데이터의 일괄 처리당 행 수를 지정합니다. 각 배치는 커밋되기 전에 전체 배치를 가져오는 별도의 트랜잭션으로 수입되고 기록됩니다. 기본적으로 bcp 는 데이터 파일의 모든 행을 하나의 일괄 처리로 가져옵니다. 여러 일괄 처리에 행을 분산시키려면 데이터 파일의 행 수보다 작은 batch_size 를 지정합니다. 일괄 처리에 대한 트랜잭션이 실패하면 현재 일괄 처리에서 삽입한 내용만 롤백됩니다. 커밋된 트랜잭션에서 이미 가져온 일괄 처리는 이후 오류의 영향을 받지 않습니다.
-b 및 -h "ROWS_PER_BATCH=<bb>" 힌트는 서로 배타적입니다.
-b에서 일괄 처리를 명시적으로 제어하거나 데이터를 단일 트랜잭션으로 보낼 때 서버 최적화 프로그램의 힌트를 사용하려는 경우에 사용합니다 ROWS_PER_BATCH.
-h "힌트 [, ... n]"
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
데이터를 테이블 또는 뷰로 대량으로 가져오는 동안 사용할 힌트 또는 힌트를 지정합니다.
ORDER (열 [오름차순 | 내림차순] [, ...n])
데이터 파일에 있는 데이터의 정렬 순서입니다. 가져오는 데이터가 테이블의 클러스터형 인덱스(있는 경우)에 따라 정렬되면 대량 가져오기 성능이 향상됩니다. 데이터 파일이 클러스터형 인덱스 키의 순서가 아닌 다른 순서로 정렬되거나 테이블에 클러스터형 인덱스가 없으면
ORDER절이 무시됩니다. 제공하는 열 이름은 대상 테이블에서 유효한 열 이름이어야 합니다. 기본적으로 bcp 는 데이터 파일이 정렬되지 않은 것으로 간주합니다. 대량 가져오기 작업을 최적화하기 위해 SQL Server 에서는 가져온 데이터가 정렬되어 있는지도 확인합니다.ROWS_PER_BATCH = bb
일괄 처리당 데이터 행 수(bb) 지정
-b하지 않을 때 사용되므로 전체 데이터 파일이 단일 트랜잭션으로 서버에 전송됩니다. 서버는 bb값에 따라 대량 로드를 최적화합니다. 기본적으로ROWS_PER_BATCH은/는 알 수 없습니다.KILOBYTES_PER_BATCH = cc
일괄 처리당 데이터의 대략적인 킬로바이트 수 (cc)입니다. 기본적으로
KILOBYTES_PER_BATCH은/는 알 수 없습니다.TABLOCK
대량 로드 작업 중에 대량 업데이트 테이블 수준 잠금이 획득되도록 지정합니다. 그렇지 않으면 행 수준 잠금이 획득됩니다. 이 힌트는 대량 복사 작업 중에 잠금을 유지하면 테이블에 대한 잠금 경합이 줄어들기 때문에 성능이 크게 향상됩니다.
TABLOCK이 지정되고 테이블에 인덱스가 없는 경우 여러 클라이언트에서 동시에 테이블을 로드할 수 있습니다. 기본적으로 테이블 옵션은table lock on bulkload잠금 동작을 결정합니다. 자세한 내용은 sp_tableoption참조하세요.메모
대상 테이블이 클러스터형 columnstore 인덱스인 경우 각 동시 스레드는 인덱스 내에 별도의 행 그룹이 할당되고 데이터를 로드하기 때문에 여러 동시 클라이언트에서 로드하는 데
TABLOCK힌트가 필요하지 않습니다. 자세한 내용은 Columnstore 인덱스: 개요를 참조하세요.CHECK_CONSTRAINTS
대량 가져오기 작업 중 대상 테이블 또는 뷰의 모든 제약 조건을 검사하도록 지정합니다. 힌트가
CHECK_CONSTRAINTS없으면 제약CHECK조건과FOREIGN KEY제약 조건이 무시되고 작업 후에 테이블에 대한 제약 조건이 신뢰할 수 없는 것으로 표시됩니다.메모
UNIQUE,PRIMARY KEY및NOT NULL제약 조건은 항상 적용됩니다.어느 시점에서는 전체 테이블의 제약 조건을 확인할 필요가 있습니다. 대량 가져오기 작업 전에 테이블이 비어 있지 않은 경우 제약 조건을 다시 적용하는 비용이 증분 데이터에
CHECK제약 조건을 적용하는 비용을 초과할 수 있습니다. 따라서 일반적으로 증분 대량 가져오기 중에 제약 조건 검사를 사용하도록 설정할 수 있습니다.입력 데이터에 제약 조건을 위반하는 행이 포함된 경우에는 제약 조건을 사용하지 않을 수 있습니다(기본 동작). 제약 조건을 사용하지 않도록 설정
CHECK하면 데이터를 가져온 다음 Transact-SQL 문을 사용하여 유효하지 않은 데이터를 제거할 수 있습니다.메모
-mmax_errors 스위치는 제약 조건 검사에 적용되지 않습니다.FIRE_TRIGGERS
인수에서 사용하여 이 옵션을 지정하면 대상 테이블에 정의된 모든 삽입 트리거가 대량 복사 작업 중에 실행됩니다. 지정
FIRE_TRIGGERS하지 않으면 삽입 트리거가 실행되지 않습니다.FIRE_TRIGGERSout,queryout및format인수에 대해 무시됩니다.
-m max_errors
bcp 작업이 취소되는 최대 구문 오류 발생 횟수를 지정합니다. 구문 오류란 대상 데이터 형식으로의 데이터 변환 오류를 나타냅니다. max_errors 합계는 제약 조건 위반과 같이 서버에서만 검색할 수 있는 오류를 제외합니다.
bcp 유틸리티에서 복사할 수 없는 행은 무시되고 하나의 오류로 계산됩니다. 이 옵션을 포함하지 않으면 기본값은 10입니다.
메모
이 -m 옵션은 money 또는 bigint 데이터 형식을 변환할 때 적용되지 않습니다.
-F 첫_줄
테이블에서 내보내거나 데이터 파일에서 가져올 첫 번째 행 번호를 지정합니다. 이 매개 변수에는 () 0보다 크지만 (>)보다< 작거나 총 행 수와 같은 값이 필요합니다. 이 매개 변수를 지정하지 않으면 기본값은 파일의 첫 번째 행입니다.
first_row 는 최대 2^63-1의 값을 갖는 양의 정수입니다.
-F
first_row 1부터 시작하는 번호 매기기입니다.
-L last_row (마지막 행)
테이블에서 내보내거나 데이터 파일에서 가져올 마지막 행 번호를 지정합니다. 이 매개 변수에는 (>) 0보다 크거나 마지막 행 수보다 작<거나 같은 값이 필요합니다. 이 매개 변수를 지정하지 않으면 기본값은 파일의 마지막 행입니다.
last_row 는 최대 2^63-1의 값을 갖는 양의 정수입니다.
-r row_term
행 종결자를 지정합니다. 기본값은 \n(줄 바꿈 문자)입니다. 기본 행 종결자를 재정의하려면 이 매개 변수를 사용합니다. 자세한 내용은 필드 및 행 종결자 지정(SQL Server)을 참조하세요.
bcp 명령에서 16진수 표기법으로 행 종료 문자를 지정하는 경우 값은 0x00에서 잘립니다. 예를 들면, 0x410041을 지정하면 0x41이 사용됩니다.
row_term이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -r과 row_term 값 사이에 공백을 포함하지 않습니다.
-t field_term
필드 구분자를 지정합니다. 기본값은 \t(탭 문자)입니다. 기본 필드 종결자를 재정의하려면 이 매개 변수를 사용합니다. 자세한 내용은 필드 및 행 종결자 지정(SQL Server)을 참조하세요.
bcp 명령에서 16진수 표기법으로 필드 종결자를 지정하는 경우 값은 0x00에서 잘립니다. 예를 들면, 0x410041을 지정하면 0x41이 사용됩니다.
field_term 이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -t와 field_term 값 사이에 공백을 포함하지 않습니다.
값 처리
-k
빈 열이 열에 대한 기본값을 삽입하지 않고 작업 중에 null 값을 유지하도록 지정합니다. 자세한 내용은 대량 가져오기 중 null 또는 기본값 유지(SQL Server)을 참조하세요.
-E
작업에서 가져온 데이터 파일의 ID 값을 ID 열에 사용하게 지정합니다. 지정 -E하지 않으면 SQL Server는 가져오고 있는 데이터 파일에서 이 열의 ID 값을 무시하고 테이블을 만드는 동안 지정된 시드 및 증가 값에 따라 고유 값을 자동으로 할당합니다. 자세한 내용은 DBCC CHECKIDENT를 참조하세요.
데이터 파일에 테이블 또는 뷰의 ID 열에 대한 값이 없는 경우 서식 파일을 사용하여 데이터를 가져올 때 테이블 또는 뷰의 ID 열을 건너뛰도록 지정합니다. SQL Server는 열에 고유한 값을 자동으로 할당합니다.
-E 옵션을 사용하려면 특별 권한이 있어야 합니다. 자세한 내용은 이 문서의 뒷부분에서 "설명"을 참조하세요.
파일 I/O 및 로깅
-i input_file (파일 입력 옵션)
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
응답 파일의 이름을 지정합니다. 이 파일에는 대화형 모드를 사용하여 대량 복사 작업을 수행할 때 각 데이터 필드에 대한 명령 프롬프트 질문에 대한 응답이 포함됩니다(-n-c-w-N또는 지정되지 않음).
input_file이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -i와 input_file 값 사이에 공백을 포함하지 않습니다.
-o 출력_파일
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
명령 프롬프트에서 리디렉션된 출력을 받는 파일의 이름을 지정합니다.
output_file이 하이픈(-) 또는 슬래시(/)로 시작하는 경우 -o와 output_file 값 사이에 공백을 포함하지 않습니다.
-e err_file
bcp 유틸리티가 파일에서 데이터베이스로 전송할 수 없는 행을 저장하는 데 사용되는 오류 파일의 전체 경로를 지정합니다. bcp 명령의 오류 메시지는 사용자의 워크스테이션에 나타납니다. 이 옵션을 사용하지 않으면 오류 파일이 만들어지지 않습니다.
err_file이 하이픈(-) 또는 슬래시(/)로 시작하는 경우에는 -e와 err_file 값 사이에 공백을 포함하지 않습니다.
호환성 및 버전 관리
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }
적용 대상: Windows에만 해당합니다. Linux 및 macOS에서는 지원되지 않습니다.
이전 SQL Server버전의 데이터 형식을 사용하여 대량 복사 작업을 수행합니다. 이 옵션은 각 필드에 대한 정보를 요청하지 않으며 기본값을 사용합니다.
-
80= SQL Server 2000(8.x) -
90= SQL Server 2005(9.x) -
100= SQL Server 2008(10.0.x) 및 SQL Server 2008 R2(10.50.x) -
110= SQL Server 2012(11.x) -
120= SQL Server 2014(12.x) -
130= SQL Server 2016(13.x) -
140= SQL Server 2017(14.x) -
150= SQL Server 2019(15.x) -
160= SQL Server 2022(16.x) -
170= SQL Server 2025(17.x)
예를 들어 SQL Server 2000(8.x)이 지원하지 않지만 이후 버전에서 도입된 형식에 대한 데이터를 생성하려면 이 -V80 옵션을 사용합니다.
자세한 내용은 SQL Server 이전 버전으로부터 기본 및 문자 형식 데이터 가져오기를 참조하세요.
기타 옵션
-R
bcp 유틸리티는 클라이언트 컴퓨터의 로캘 설정에 정의된 지역별 형식을 사용하여 통화, 날짜 및 시간 데이터를 SQL Server에 대량 복사할 것을 지정합니다. 기본적으로 bcp 는 지역 설정을 무시합니다.
-v
bcp 유틸리티 버전 번호 및 저작권을 보고합니다.
비고
bcp 유틸리티는 지원되는 모든 SQL Server 버전과 호환되는 네이티브 데이터 파일을 지원합니다.
bcp 유틸리티는 오류 메시지의 처음 512바이트만 표시합니다.
Permissions
bcp out 작업에는 원본 테이블에 대한 SELECT 권한이 필요합니다.
작업에는 대상 테이블에 대한 SELECT 및 INSERT 권한이 최소한으로 필요합니다bcp in. 또한 다음 조건이 충족되는 경우 ALTER TABLE 권한이 필요합니다.
제약 조건이 있고
CHECK_CONSTRAINTS힌트가 지정되지 않았습니다.기본적으로 제약 조건은 사용되지 않습니다. 제약 조건을 명시적으로 사용하려면
-h힌트와 함께CHECK_CONSTRAINTS옵션을 사용합니다.트리거가 있고
FIRE_TRIGGERS힌트가 지정되지 않았습니다.기본적으로 트리거는 실행되지 않습니다. 트리거를 명시적으로 실행하려면
-h힌트와 함께FIRE_TRIGGERS옵션을 사용합니다.-E옵션을 사용하여 데이터 파일에서 ID 값을 가져옵니다.
관련 콘텐츠
- 대량 내보내기 또는 가져오기를 위한 데이터 준비
- BULK INSERT(Transact-SQL)
- OPENROWSET(Transact-SQL)
- SET QUOTED_IDENTIFIER(Transact-SQL)
- sp_configure(Transact-SQL)
- sp_tableoption(Transact-SQL)
- 데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server)
도움말 보기
- SQL에 대한 아이디어: SQL Server를 개선하기 위해 제안할 사항이 있나요?
- Microsoft Q & A(SQL Server)
- DBA Stack Exchange(태그 sql-server): SQL Server 관련 문의 사항
- Stack Overflow(태그 sql-server): SQL 개발 관련 문의 사항
- Microsoft SQL Server 사용 조건 및 정보
- 비즈니스 사용자에 대한 지원 옵션
- 추가 SQL Server 도움말 및 피드백
SQL 설명서 작성에 참여하세요.
SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 그렇게 하면 설명서를 개선하는 데 도움이 될 뿐만 아니라 페이지의 기여자로도 인정받게 됩니다.
자세한 내용은 Microsoft Learn 편집 설명서를 참조하세요.