데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System(PDW)

SQL Server 테이블로 데이터를 대량으로 가져오거나 테이블에서 데이터를 대량으로 내보내는 경우 서식 파일을 사용하여 데이터를 대량으로 내보내거나 대량으로 가져오는 데 필요한 모든 형식 정보를 저장할 수 있습니다. 여기에는 해당 테이블을 기준으로 데이터 파일의 각 필드에 대한 형식 정보가 포함됩니다.

SQL Server는 두 유형의 서식 파일, 즉 XML 서식 및 비 XML 서식 파일을 지원합니다. 비 XML 서식 파일과 XML 서식 파일은 모두 데이터 파일의 각 필드에 대한 설명을 포함하며, XML 서식 파일의 경우에는 해당하는 테이블 열에 대한 설명도 포함합니다. 일반적으로 XML 서식 파일과 비 XML 서식 파일은 서로 전환이 가능하지만 새 서식 파일에는 비 XML 서식 파일에 비해 여러 가지 장점이 있는 XML 구문을 사용하는 것이 좋습니다. 자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.

참고 항목

대량 삽입을 비롯한 이 구문은 Azure Synapse Analytics에서 지원되지 않습니다. Azure Synapse Analytics 및 기타 클라우드 데이터베이스 플랫폼 통합에서 Azure Data Factory의 COPY 문을 통해 또는 COPY INTO 및 PolyBase와 같은 T-SQL 문을 사용하여 데이터 이동을 수행합니다.

서식 파일의 이점

서식 파일은 다른 데이터 형식을 준수하거나 다른 소프트웨어에서 데이터 파일을 읽기 위해 거의 또는 전혀 편집할 필요가 없는 데이터 파일을 작성하기 위한 유연한 시스템을 제공합니다.

불필요한 데이터를 추가하거나 삭제하거나 데이터 파일의 기존 데이터를 다시 정렬하지 않고도 데이터를 대량으로 가져올 수 있습니다. 서식 파일은 데이터 파일의 필드와 테이블의 열 사이에 불일치가 있을 때 유용할 수 있습니다.

서식 파일의 예

다음 예에서는 비 XML 서식 파일 및 XML 서식 파일의 레이아웃을 보여 줍니다. 이러한 형식 파일은 샘플 데이터베이스의 HumanResources.myTeamAdventureWorks2022 테이블에 해당합니다. 이 테이블에는 4개의 열( , Name, TitleModifiedDate)이 포함됩니다EmployeeID.

참고 항목

이 테이블 및 만드는 방법에 대한 자세한 내용은 HumanResources.myTeam 샘플 테이블(SQL Server)을 참조하세요.

A. 비 XML 서식 파일 사용

다음 비 XML 서식 파일은 HumanResources.myTeam 테이블에 SQL Server 네이티브 데이터 형식을 사용합니다. 이 형식 파일은 다음 bcp 명령을 사용하여 만들었습니다.

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T

bcp 명령은 기본적으로 Windows 인증을 사용하는 SQL Server 로컬 기본 인스턴스로 설정됩니다. 원하는 대로 다른 인스턴스 및 로그인 정보를 지정할 수 있습니다. 자세한 내용은 bcp 유틸리티를 참조하세요. 예를 들어 Windows 인증을 사용하여 instance라는 이름의 원격 서버를 지정하려면 다음을 사용합니다.

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T -S servername/instancename

이 서식 파일의 내용은 다음과 같으며 SQL Server의 주 버전 번호 및 테이블 메타데이터 정보로 시작합니다.

14.0
4
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS

자세한 내용은 비 XML 서식 파일 사용(SQL Server)을 참조하세요.

B. XML 서식 파일 사용

다음 XML 서식 파일은 HumanResources.myTeam 테이블에 SQL Server 네이티브 데이터 형식을 사용합니다. 이 형식 파일은 다음 bcp 명령을 사용하여 만들었습니다.

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.xml -x -n -T

서식 파일은 다음을 포함합니다.

<?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="NativePrefix" LENGTH="1"/>
  <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="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>

자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.

서식 파일이 필요한 경우는?

형식 파일은 일반적으로 다음과 같은 경우에 필요합니다.

  • 문을 사용하는 INSERT ... SELECT * FROM OPENROWSET(BULK...) 경우

  • bcp 또는 BULK INSERT.를 사용하는 복잡한 대량 가져오기 상황의 경우

  • 동일한 데이터 파일이 스키마가 다른 여러 테이블의 원본으로 사용되는 경우

  • 데이터 파일에는 대상 테이블에 열이 있는 필드 수가 다릅니다. 예를 들어:

    • 대상 테이블에는 기본값이 정의되거나 NULL 허용되는 열이 하나 이상 포함되어 있습니다.
    • 사용자에게 테이블의 하나 이상의 열에 대한 권한이 없습니다 SELECT/INSERT .
    • 단일 데이터 파일은 스키마가 다른 두 개 이상의 테이블과 함께 사용됩니다.
  • 열 순서는 데이터 파일과 테이블에 따라 다릅니다.

  • 종료 문자 또는 접두사 길이는 데이터 파일의 열마다 다릅니다.

참고 항목

서식 파일이 없는 경우 bcp 명령이 데이터 형식 스위치(-n, -c또는 -w) BULK INSERT 또는 -N연산에서 옵션을 지정 DATAFILETYPE 하는 경우 지정된 데이터 형식이 데이터 파일의 필드를 해석하는 기본 메서드로 사용됩니다.