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

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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 구문을 사용하는 것이 좋습니다.

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

XML 서식 파일 만들기

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

XML 서식 파일을 구분하려면 파일 이름 확장명(예MyTable.xml: .)으로 사용하는 .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에서 만든 서식 파일은 모든 테이블 열에 대한 설명을 순서대로 제공합니다. 서식 파일을 수정하여 테이블 행을 다시 정렬하거나 생략할 수 있습니다. 필드가 테이블 열에 직접 매핑되지 않는 데이터 파일로 서식 파일을 사용자 지정할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.