bcp를 사용하여 서식 파일 만들기(SQL Server)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

이 문서에서는 bcp 유틸리티를 사용하여 특정 테이블에 대한 서식 파일을 만드는 방법에 대해 설명합니다. 서식 파일은 지정된 데이터 형식 옵션(-n, -c, -w 또는 -N)과 테이블 또는 뷰 구분 기호를 기반으로 합니다.

SQL Server 테이블에 대량으로 가져오거나 테이블에서 데이터를 대량으로 내보내는 경우 데이터 파일을 작성하기 위한 유연한 시스템으로 서식 파일을 사용할 수 있습니다. 서식 파일은 다른 데이터 형식과 맞추거나 다른 소프트웨어 프로그램의 데이터 파일을 읽기 위해 편집이 거의 또는 전혀 필요하지 않습니다.

제한 사항

서식 파일을 읽는 데 사용되는 bcp 유틸리티(bcp.exe)의 버전은 서식 파일을 만드는 데 사용되는 버전 이상이어야 합니다. 예를 들어 SQL Server 2016(13.x) bcp는 SQL Server 2014(12.x) bcp에서 생성된 버전 12.0 서식 파일을 읽을 수 있지만 SQL Server 2014(12.x) bcp는 SQL Server 2016(13.x) bcp에서 생성된 버전 13.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 구문을 사용하는 것이 좋습니다.

이 문서에서는 Microsoft SQL Server 예제 및 커뮤니티 프로젝트 홈 페이지에서 다운로드할 수 있는 AdventureWorks2022 예제 데이터베이스가 필요합니다. Adventure Works Cycles는 데이터베이스 개념 및 시나리오를 설명하는 데 사용되는 가상 제조 회사입니다.

XML 서식 파일 만들기

bcp 명령을 사용하여 서식 파일을 만들려면 데이터 파일 경로 대신 format 인수를 지정하고 nul을 사용합니다. 다음과 같이 format 옵션에는 항상 -f 옵션이 필요하며 XML 서식 파일을 만드는 경우 -x과 같은bcp <table_or_view> format nul -f <format_file_name> -x 옵션도 지정해야 합니다.

XML 서식 파일을 구분하기 위해 파일 이름 확장명으로 .xml을 사용하는 것이 좋습니다(예: MyTable.xml).

XML 서식 파일의 구조 및 필드에 대한 자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.

이 섹션에는 bcp 명령을 사용하여 XML 서식 파일을 만드는 방법을 보여 주는 다음 예가 포함되어 있습니다. HumanResources.Department 테이블에는 네 개의 열, 즉 DepartmentID, Name, GroupNameModifiedDate가 있습니다.

A. 문자 데이터용 XML 서식 파일 만들기

다음 예에서는 Department.xml테이블에 대한 HumanResources.Department XML 서식 파일을 만듭니다. 서식 파일은 문자 데이터 형식 및 기본이 아닌 필드 종결자(,)를 사용합니다. 생성된 서식 파일의 내용은 명령 뒤에 표시됩니다.

bcp 명령에는 다음 한정자가 포함됩니다.

한정자 설명
format nul -x -f <format_file> XML 서식 파일을 지정합니다.
-c 문자 데이터를 지정합니다.
-t, 쉼표(,)를 필드 종결자로 지정합니다.

참고: 데이터 파일이 기본 필드 종결자(\t)를 사용하면 -t 스위치는 불필요합니다.
-T bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server 로 연결되도록 지정합니다. -T가 지정되지 않은 경우 성공적으로 로그인하려면 -U-P를 지정 해야 합니다.

Windows 명령 프롬프트에 다음 bcp 명령을 입력합니다.

bcp AdventureWorks2022.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 서식 파일(SQL Server)을 참조하세요. 문자 데이터에 대한 자세한 내용은 문자 서식을 사용하여 데이터 가져오기 및 내보내기(SQL Server)를 참조하세요.

B. 네이티브 데이터용 XML 서식 파일 만들기

다음 예에서는 Department-n.xml테이블에 대한 HumanResources.Department XML 서식 파일을 만듭니다. 서식 파일은 네이티브 데이터 형식을 사용합니다. 생성된 서식 파일의 내용은 명령 뒤에 표시됩니다.

bcp 명령에는 다음 한정자가 포함됩니다.

한정자 설명
format nul -x -f <format_file> XML 서식 파일을 지정합니다.
-n 네이티브 데이터 형식을 지정합니다.
-T bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server 로 연결되도록 지정합니다. -T가 지정되지 않은 경우 성공적으로 로그인하려면 -U-P를 지정 해야 합니다.

Windows 명령 프롬프트에 다음 bcp 명령을 입력합니다.

bcp AdventureWorks2022.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 서식 파일(SQL Server)을 참조하세요. 원시 데이터를 사용하는 방법에 대한 자세한 내용은 원시 형식을 사용하여 데이터 가져오기 및 내보내기(SQL Server)를 참조하세요.

테이블 열에 데이터 필드 매핑

bcp에서 만든 서식 파일은 모든 테이블 열에 대한 설명을 순서대로 제공합니다. 서식 파일을 수정하여 테이블 행을 다시 정렬하거나 생략할 수 있습니다. 테이블 열에 직접 매핑하지 않는 필드가 있는 데이터 파일에 대해 서식 파일을 사용자 지정할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.