적용 대상: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System(PDW)
이 문서에서는 bcp 유틸리티를 사용하여 특정 테이블에 대한 서식 파일을 만드는 방법에 대해 설명합니다. 서식 파일은 지정된 데이터 형식 옵션(-n, -c, -w 또는 -N)과 테이블 또는 뷰 구분 기호를 기반으로 합니다.
SQL Server 테이블에 대량으로 가져오거나 테이블에서 데이터를 대량으로 내보내는 경우 데이터 파일을 작성하기 위한 유연한 시스템으로 서식 파일을 사용할 수 있습니다. 서식 파일은 다른 데이터 형식과 맞추거나 다른 소프트웨어 프로그램의 데이터 파일을 읽기 위해 편집이 거의 또는 전혀 필요하지 않습니다.
제한 사항
포맷 파일을 읽는 데 사용되는 유틸리티(bcpbcp.exe)의 버전은 포맷 파일을 생성하는 데 사용된 버전과 동일하거나 그 이후여야 합니다. 예를 들어, SQL Server 2025 (17.xbcp)는 SQL Server 2022 (16.x)bcp에서 생성되는 버전 16.0 포맷 파일을 읽을 수 있지만, SQL Server 2022 (16.xbcp)는 SQL Server 2025 (17.x)bcp에서 생성되는 버전 17.0 포맷 파일을 읽을 수 없습니다.
참고
대량 삽입을 포함한 이 구문은 Azure Synapse Analytics에서 지원되지 않습니다. Azure Synapse Analytics 및 기타 클라우드 데이터베이스 플랫폼 통합에서 Azure Data Factory의 COPY 문을 통해 또는 COPY INTO 및 PolyBase와 같은 T-SQL 문을 사용하여 데이터 이동을 수행합니다.
서식 파일 만들기
SQL Server는 두 가지 유형의 포맷 파일을 지원합니다: 비XML 포맷과 XML 포맷. 비 XML 서식 파일은 이전 버전의 SQL Server에서 원래 지원했던 서식 파일입니다.
일반적으로 XML 서식 파일과 비 XML 서식 파일은 서로 전환이 가능하지만 서식 파일에는 비 XML 서식 파일에 비해 여러 가지 장점이 있는 XML 구문을 사용하는 것이 좋습니다.
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다. Adventure Works Cycles는 데이터베이스 개념 및 시나리오를 설명하는 데 사용되는 가상 제조 회사입니다.
포맷 파일 생성
형식 파일을 만들기 위해 bcp를 사용하려면 format 인수를 지정하고 데이터 파일 경로 대신 nul를 사용하세요.
format 옵션은 항상 -f 옵션이 필요합니다.
XML 형식 파일을 만들려면 -x 옵션(예: bcp <table_or_view> format nul -f <format_file_name> -x)을 지정해야 합니다.
XML 형식 파일을 식별하려면 파일 이름 확장명으로 .xml를 사용합니다. 예를 들어 MyTable.xml입니다.
XML 형식 파일의 구조와 필드에 대한 정보는 XML 형식 파일을 참조하세요.
예시
이 섹션에는 bcp를 사용하여 포맷 파일을 만드는 방법을 보여 주는 예제가 포함되어 있습니다.
HumanResources.Department 테이블에는 네 개의 열, 즉 DepartmentID, Name, GroupName및 ModifiedDate가 있습니다.
A. 문자 데이터를 위한 포맷 파일 생성
다음 예시는 문자 데이터 형식을 사용하여 테이블의 HumanResources.Department 포맷 파일을 생성합니다.
.이라는 이름의 Department-c.xmlXML 형식 파일을 생성합니다. 형식 파일은 기본값이 아닌 필드 종결자(,)를 사용합니다. 다음 섹션에서는 생성된 포맷 파일의 내용을 보여줍니다.
명령어에는 bcp 다음과 같은 수식어가 포함되어 있습니다.
| 한정자 | 설명 |
|---|---|
format nul -x -f <format_file> |
XML 서식 파일을 지정합니다. |
-c |
문자 데이터를 지정합니다. |
-t, |
쉼표(,)를 필드 종결자로 지정합니다.참고: 데이터 파일이 기본 필드 종결자( \t)를 사용하면 -t 스위치는 불필요합니다. |
-T |
통합 보안을 통해 신뢰할 수 있는 연결로 SQL Server에 연결되는 것을 명시 bcp 합니다.
-T를 지정하지 않은 경우, 성공적으로 로그인하려면 -P 및 -U를 지정해야 합니다. |
Windows 명령 프롬프트에 다음 bcp 명령을 입력합니다.
bcp AdventureWorks2025.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T
생성된 Department-c.xml서식 파일에는 다음 XML 요소가 포함됩니다.
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
이 형식 파일의 문법에 대한 정보는 XML 형식 파일을 참조하세요. 문자 데이터에 관한 정보는 '문자 형식 사용으로 데이터를 가져오거나 내보내기'를 참조하세요.
B. 네이티브 데이터를 위한 포맷 파일 생성
다음 예시는 네이티브 데이터 타입을 사용하여 테이블의 HumanResources.Department 포맷 파일을 생성합니다.
.이라는 이름의 Department-n.xmlXML 형식 파일을 생성합니다. 다음 섹션에서는 생성된 포맷 파일의 내용을 보여줍니다.
명령어에는 bcp 다음과 같은 수식어가 포함되어 있습니다.
| 한정자 | 설명 |
|---|---|
format nul -x -f <format_file> |
XML 서식 파일을 지정합니다. |
-n |
네이티브 데이터 형식을 지정합니다. |
-T |
통합 보안을 통해 신뢰할 수 있는 연결로 SQL Server에 연결되는 것을 명시 bcp 합니다.
-T을(를) 지정하지 않은 경우, 로그인에 성공하려면 -P 및 -U를 지정해야 합니다. |
Windows 명령 프롬프트에 다음 bcp 명령을 입력합니다.
bcp AdventureWorks2025.HumanResources.Department format nul -x -f Department-n.xml -n -T
생성된 Department-n.xml서식 파일에는 다음 XML 요소가 포함됩니다.
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
<FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
이 형식 파일의 문법에 대한 정보는 XML 형식 파일을 참조하세요. 네이티브 데이터 사용 방법에 대한 정보는 ' 데이터 가져오기 또는 내보내기 위한 네이티브 포맷 사용하기'를 참조하세요.
C. 유니코드 네이티브 데이터용 비 XML 서식 파일 만들기
HumanResources.Department 테이블을 위한 유니코드 네이티브 데이터용 비 XML 서식 파일을 만들려면 다음 명령을 사용합니다.
bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt
유니코드 네이티브 데이터를 사용하는 방법에 대한 자세한 내용은 ' 유니코드 네이티브 포맷 사용해 데이터를 가져오거나 내보내기'를 참조하세요.
D. 유니코드 문자 데이터용 비 XML 서식 파일 만들기
기본 종결자를 사용하는 HumanResources.Department 테이블을 위한 유니코드 문자 데이터용 비 XML 서식 파일을 만들려면 다음 명령을 사용합니다.
bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt
유니코드 문자 데이터 사용법에 대한 자세한 내용은 ' 유니코드 문자 형식 사용(Use Unicode character format to import/export)'을 참조하세요.
E. 코드 페이지 옵션이 있는 형식 파일 사용
를 사용해 bcp format포맷 파일을 만들면, 정렬과 코드 페이지에 대한 정보가 포맷 파일에 기록됩니다.
다음 예제에서는 열이 다섯 개 있는 서식 파일에 데이터 정렬이 포함됩니다.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 Cyrillic_General_CS_AS
2 SQLCHAR 0 0 "\t" 2 c_1 Cyrillic_General_CS_AS
3 SQLCHAR 0 3000 "\t" 3 c_2 Cyrillic_General_CS_AS
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
bcp in -c -C65001 -f format_file ...을 사용하거나, BULK INSERT 또는 OPENROWSET를 FORMATFILE='format_file' CODEPAGE=65001 ...와 함께 사용하여 SQL Server로 데이터를 가져오려고 하면, 형식 파일의 데이터 정렬 또는 코드 페이지 정보가 65001 옵션보다 우선 적용됩니다.
따라서 포맷 파일을 생성할 때는 생성된 포맷 파일에서 콜레이션 정보를 수동으로 삭제한 후 SQL Server로 데이터를 다시 가져오기 전에 반드시 삭제해야 합니다.
다음 예시는 정렬 정보 없이 포맷 파일을 보여줍니다.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 ""
2 SQLCHAR 0 0 "\t" 2 c_1 ""
3 SQLCHAR 0 3000 "\t" 3 c_2 ""
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
테이블 열에 데이터 필드 매핑
생성된 bcp 형식 파일은 모든 테이블 열을 순서대로 설명합니다. 포맷 파일을 수정해 테이블 열을 재배열하거나 생략할 수 있습니다. 테이블 열에 직접 매핑하지 않는 필드가 있는 데이터 파일에 대해 서식 파일을 사용자 지정할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.