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

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

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

항목 내용:

  • 서식 파일의 이점

  • 서식 파일의 예

  • 서식 파일이 필요한 경우

  • 관련 태스크

서식 파일의 이점

  • 다른 데이터 형식과 맞추기 위한 편집 작업이 거의 필요 없는 데이터 파일을 작성하거나 다른 소프트웨어의 데이터 파일을 읽는 작업을 유연하게 수행할 수 있습니다.

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

서식 파일의 예

다음 예에서는 비 XML 서식 파일 및 XML 서식 파일의 레이아웃을 보여 줍니다. 이러한 서식 파일은 AdventureWorks2012 예제 데이터베이스의 HumanResources.myTeam 테이블에 해당합니다. 이 테이블에는 네 개의 열, 즉 EmployeeID, Name, Title 및 ModifiedDate가 있습니다.

[!참고]

이 테이블에 대한 자세한 내용과 테이블을 만드는 방법은 HumanResources.myTeam 예제 테이블(SQL Server)를 참조하십시오.

1.비 XML 서식 파일 사용

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

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T 
The contents of this format file are as follows: 9.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)를 참조하십시오.

[맨 위]

2.XML 서식 파일 사용

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

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T 

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

 <?xml version="1.0"?>
<BCPFORMAT xmlns="https://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 또는 -N) 또는 BULK INSERT 연산에 지정된 DATAFILETYPE 옵션의 데이터 형식을 데이터 파일의 필드를 해석하는 기본 방법으로 사용합니다.

[맨 위]

관련 태스크

[맨 위]

참고 항목

개념

비 XML 서식 파일(SQL Server)

XML 서식 파일(SQL Server)

대량 가져오기 또는 대량 내보내기를 위한 데이터 형식(SQL Server)