예제 XML 서식 파일

이 항목의 예에서는 XML 서식 파일 사용에 관련된 중요한 내용을 설명합니다. 서식 파일의 구문은 작업 방향과는 무관합니다. 즉, 대량 내보내기와 대량 가져오기의 구문은 동일합니다.

이 예에서는 다음을 설명합니다.

  • 테이블 열과 동일하게 문자 데이터 필드 정렬

  • 데이터 필드와 테이블 열을 서로 다르게 정렬

  • 데이터 필드 생략

  • 다양한 형식의 필드를 열에 매핑

  • XML 데이터를 테이블에 매핑

  • 고정 길이 또는 고정 너비 필드 가져오기

[!참고]

서식 파일을 만드는 방법은 서식 파일 만들기를 참조하십시오.

다음 예의 데이터 파일에서 <tab>은 데이터 파일의 탭 문자를 나타내며 <return>은 캐리지 리턴을 나타냅니다.

A. 테이블 열과 동일하게 문자 데이터 필드 정렬

다음 예에서는 3개의 문자 데이터 필드가 포함된 데이터 파일을 설명하는 XML 서식 파일을 보여 줍니다. 서식 파일은 데이터 파일을 3개의 열이 포함된 테이블로 매핑합니다. 데이터 필드는 테이블 열과 일 대 일로 대응합니다.

테이블(행): Person (Age int, FirstName varchar(20), LastName varchar(30))

데이터 파일(레코드): Age<tab>Firstname<tab>Lastname<return>

다음 XML 서식 파일은 데이터 파일의 데이터를 테이블로 읽어 옵니다.

서식 파일은 <RECORD> 요소에서 3개의 필드에 있는 데이터 값을 문자 데이터로 표현합니다. 각 필드에서 TERMINATOR 특성은 데이터 값 다음에 오는 종결자를 나타냅니다.

데이터 필드는 테이블 열과 일 대 일로 대응합니다. 서식 파일은 <ROW> 요소의 Age 열을 첫 번째 필드에, FirstName 열을 두 번째 필드에, LastName 열을 세 번째 필드에 매핑합니다.

<?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="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!참고]

여기에 해당되는 AdventureWorks2008R2의 예는 서식 파일 만들기를 참조하십시오.

B. 데이터 필드와 테이블 열을 서로 다르게 정렬

다음 예에서는 3개의 문자 데이터 필드가 포함된 데이터 파일을 설명하는 XML 서식 파일을 보여 줍니다. 서식 파일은 데이터 파일을 데이터 파일의 필드와 다르게 정렬된 3개의 열을 포함하는 테이블로 매핑합니다.

테이블(행): Person (Age int, FirstName varchar(20), LastName varchar(30))

데이터 파일(레코드): Age<tab>Lastname<tab>Firstname<return>

서식 파일은 <RECORD> 요소에서 3개의 필드에 있는 데이터 값을 문자 데이터로 표현합니다.

서식 파일은 <ROW> 요소의 Age 열을 첫 번째 필드에, FirstName 열을 세 번째 필드에, LastName 열을 두 번째 필드에 매핑합니다.

<?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="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!참고]

여기에 해당되는 AdventureWorks2008R2의 예는 서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑을 참조하십시오.

C. 데이터 필드 생략

다음 예에서는 4개의 문자 데이터 필드가 포함된 데이터 파일을 설명하는 XML 서식 파일을 보여 줍니다. 서식 파일은 데이터 파일을 3개의 열이 포함된 테이블로 매핑합니다. 두 번째 데이터 필드는 대응되는 테이블 열이 없습니다.

테이블(행): Person (Age int, FirstName Varchar(20), LastName Varchar(30))

데이터 파일(레코드): Age<tab>employeeID<tab>Firstname<tab>Lastname<return>

서식 파일은 <RECORD> 요소에서 4개의 필드에 있는 데이터 값을 문자 데이터로 표현합니다. 각 필드에서 TERMINATOR 특성은 데이터 값 다음에 오는 종결자를 나타냅니다.

서식 파일은 <ROW> 요소의 Age 열을 첫 번째 필드에, FirstName 열을 세 번째 필드에, LastName 열을 네 번째 필드에 매핑합니다.

<?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="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="10" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="20" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!참고]

여기에 해당되는 AdventureWorks2008R2의 예는 서식 파일을 사용하여 데이터 필드 건너뛰기를 참조하십시오.

D. <FIELD> xsi:type을 <COLUMN> xsi:type으로 매핑

다음 예에서는 다양한 형식의 필드와 함께 해당 필드와 열의 매핑을 보여 줍니다.

<?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 xsi:type="CharTerm" ID="C1" TERMINATOR="\t" 
            MAX_LENGTH="4"/>
      <FIELD xsi:type="CharFixed" ID="C2" LENGTH="10" 
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2" 
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t" 
         MAX_LENGTH="4"/>
      <FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10" 
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2" 
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4"/>
   </RECORD>
   <ROW>
      <COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT"/>
      <COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR" 
      LENGTH="16" NULLABLE="NO"/>
      <COLUMN SOURCE="C3" NAME="LastName" />
      <COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY"/>
      <COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE"/>
      <COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT"/>
      <COLUMN SOURCE="C7" NAME="Interest"xsi:type="SQLDECIMAL" 
      PRECISION="5" SCALE="3"/>
   </ROW>
</BCPFORMAT>

E. XML 데이터를 테이블에 매핑

다음 예에서는 두 개의 빈 열을 가진 테이블(t_xml)을 만듭니다. 테이블의 첫 번째 열은 int 데이터 형식에, 두 번째 열은 xml 데이터 형식에 매핑됩니다.

CREATE TABLE t_xml (c1 int, c2 xml)

다음 XML 서식 파일에서는 t_xml 테이블에 데이터 파일을 로드합니다.

<?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" PREFIX_LENGTH="1"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT"/>
  <COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR"/>
 </ROW>
</BCPFORMAT>

F. 고정 길이 또는 고정 너비 필드 가져오기

다음 예에서는 10자 또는 6자의 각 고정 필드에 대해 설명합니다. 서식 파일은 이러한 필드 길이/너비를 각각 LENGTH="10" 및 LENGTH="6"으로 나타냅니다. 데이터 파일의 모든 행은 캐리지 리턴-줄 바꿈 조합 {CR}{LF}로 끝나며 서식 파일은 이를 TERMINATOR="\r\n"으로 나타냅니다.

<?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="CharFixed" LENGTH="10"/>
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="6"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
    <COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
  </ROW>
</BCPFORMAT>