共用方式為


範例 XML 格式檔案

此主題中的範例,說明使用 XML 格式檔案的重要觀念。格式檔案的語法與作業方向無關;也就是說,不管是大量匯出還是大量匯入作業,語法都相同。

這些範例說明下列情況:

  • 以與資料表資料行相同的方式排序字元資料欄位

  • 以不同的方式排序資料欄位與資料表資料行

  • 省略資料欄位

  • 將不同類型的欄位對應到資料行

  • 將 XML 資料對應到資料表

  • 匯入固定長度或固定寬度的欄位

[!附註]

如需有關如何建立格式檔案的詳細資訊,請參閱<建立格式檔案>。

範例

在下列範例顯示的資料檔中,<tab> 表示資料檔中的定位字元,而 <return> 則表示歸位字元。

A. 以與資料表資料行相同的方式排序字元資料欄位

下列範例顯示 XML 格式檔案,其中描述包含三個字元資料欄位的資料檔。格式檔案將資料檔對應到包含三個資料行的資料表。資料欄位是以一對一的方式,來對應資料表的資料行。

Table (row): Person (Age int, FirstName varchar(20), LastName varchar(30))

Data file (record): Age<tab>Firstname<tab>Lastname<return>

下列 XML 格式檔案會將資料檔中的資料讀入資料表。

在 <RECORD> 元素中,格式檔案是以字元資料來表示這三個欄位內的資料值。每一個欄位的 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>

[!附註]

如需參考相等的 AdventureWorks 範例,請參閱<建立格式檔案>。

B. 以不同的方式排序資料欄位與資料表資料行

下列範例顯示 XML 格式檔案,其中描述包含三個字元資料欄位的資料檔。格式檔案會將資料檔對應到包含三個資料行 (排序方式與資料檔的欄位不同) 的資料表。

Table (row): Person (Age int, FirstName varchar(20), LastName varchar(30))

Data file (record): Age<tab>Lastname<tab>Firstname<return>

在 <RECORD> 元素中,格式檔案是以字元資料來表示這三個欄位內的資料值。

在 <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>

[!附註]

如需參考相等的 AdventureWorks 範例,請參閱<使用格式檔案將資料表資料行對應到資料檔欄位>。

C. 省略資料欄位

下列範例顯示 XML 格式檔案,其中描述包含四個字元資料欄位的資料檔。格式檔案將資料檔對應到包含三個資料行的資料表。第二個資料欄位不對應到任何資料表資料行。

Table (row): Person (Age int, FirstName Varchar(20), LastName Varchar(30))

Data file (record): Age<tab>employeeID<tab>Firstname<tab>Lastname<return>

在 <RECORD> 元素中,格式檔案是以字元資料來表示這四個欄位內的資料值。每一個欄位的 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>

[!附註]

如需參考相等的 AdventureWorks 範例,請參閱<使用格式檔案以略過資料欄位>。

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>

其他範例

如需非 XML 格式檔案及 XML 格式檔案的其他範例,請參閱下列主題: