File di formato XML di esempio

Data aggiornamento: 17 luglio 2006

Negli esempi riportati in questo argomento vengono illustrati alcuni aspetti fondamentali relativi all'utilizzo dei file di formato XML. La sintassi di un file di formato è indipendente dalla direzione dell'operazione, ovvero è identica sia per l'esportazione di massa che per l'importazione di massa.

Negli esempi vengono illustrati gli aspetti seguenti:

  • Ordinamento dei campi dati di tipo carattere identico a quello delle colonne della tabella
  • Ordinamento dei campi dati diverso da quello delle colonne della tabella
  • Omissione di un campo dati
  • Mapping tra tipi diversi di campi e le colonne
  • Mapping tra i dati XML e una tabella
  • Importazione di campi a lunghezza fissa o a larghezza fissa

[!NOTA] Per ulteriori informazioni sulla creazione di file di formato, vedere Creazione di un file di formato.

Esempi

Nei file di dati degli esempi seguenti, <tab> indica un carattere di tabulazione e <return> indica un ritorno a capo.

A: Ordinamento dei campi dati di tipo carattere identico a quello delle colonne della tabella

Nell'esempio seguente viene illustrato un file di formato XML che descrive un file di dati contenente tre campi dati di tipo carattere. Il file di formato esegue il mapping tra il file di dati e una tabella che contiene tre colonne. Tra i campi dati e le colonne della tabella esiste una corrispondenza di tipo uno-a-uno.

Tabella (riga): Person (Age int, FirstName varchar(20), LastName varchar(30))

File di dati (record): Age<tab>Firstname<tab>Lastname<return>

Il file di formato XML seguente legge il file di dati e quindi la tabella.

Nell'elemento <RECORD> il file di formato rappresenta i valori dei dati di tutti e tre i campi come dati di tipo carattere. Per ogni campo, l'attributo TERMINATOR indica il carattere di terminazione che segue il valore dei dati.

Tra i campi dati e le colonne della tabella esiste una corrispondenza di tipo uno-a-uno. Nell'elemento <ROW> il file di formato esegue il mapping tra la colonna Age e il primo campo, la colonna FirstName e il secondo campo e la colonna LastName e il terzo campo.

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

[!NOTA] Per un esempio equivalente relativo a AdventureWorks, vedere Creazione di un file di formato.

B: Ordinamento dei campi dati diverso da quello delle colonne della tabella

Nell'esempio seguente viene illustrato un file di formato XML che descrive un file di dati contenente tre campi dati di tipo carattere. Il file di formato esegue il mapping tra il file di dati e una tabella che contiene tre colonne ordinate in modo diverso rispetto ai campi del file di dati.

Tabella (riga): Person (Age int, FirstName varchar(20), LastName varchar(30))

File di dati (record): Age<tab>Lastname<tab>Firstname<return>

Nell'elemento <RECORD> il file di formato rappresenta i valori dei dati di tutti e tre i campi come dati di tipo carattere.

Nell'elemento <ROW> il file di formato esegue il mapping tra la colonna Age e il primo campo, la colonna FirstName e il terzo campo e la colonna LastName e il secondo campo.

La caratteristiche di differenziazione di questo esempio sono indicate in grassetto.

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

[!NOTA] Per un esempio equivalente relativo a AdventureWorks, vedere Utilizzo di un file di formato per il mapping tra le colonne della tabella e i campi del file di dati.

C: Omissione di un campo dati

Nell'esempio seguente viene illustrato un file di formato XML che descrive un file di dati contenente quattro campi dati di tipo carattere. Il file di formato esegue il mapping tra il file di dati e una tabella che contiene tre colonne. Il secondo campo dati non corrisponde a nessuna colonna della tabella.

Tabella (riga): Person (Age int, FirstName Varchar(20), LastName Varchar(30))

File di dati (record): Age<tab>employeeID<tab>Firstname<tab>Lastname<return>

Nell'elemento <RECORD> il file di formato rappresenta i valori dei dati di tutti e quattro i campi come dati di tipo carattere. Per ogni campo, l'attributo TERMINATOR indica il carattere di terminazione che segue il valore dei dati.

Nell'elemento <ROW> il file di formato esegue il mapping tra la colonna Age e il primo campo, la colonna FirstName e il terzo campo e la colonna LastName e il quarto campo.

La caratteristiche di differenziazione di questo esempio sono indicate in grassetto.

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

[!NOTA] Per un esempio equivalente relativo a AdventureWorks, vedere Utilizzo di un file di formato per escludere un campo di dati.

D: Mapping tra <FIELD> xsi:type e <COLUMN> xsi:type

Nell'esempio seguente vengono illustrati tipi diversi di campi e i relativi mapping alle colonne.

<?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: Mapping tra i dati XML e una tabella

Nell'esempio seguente viene creata una tabella vuota a due colonne denominata t_xml in cui viene eseguito il mapping tra la prima colonna e il tipo di dati int e tra la seconda colonna e il tipo di dati xml.

CREATE TABLE t_xml (c1 int, c2 xml)

Il file di formato XML seguente carica un file di dati nella tabella 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: Importazione di campi a lunghezza fissa o a larghezza fissa

Nell'esempio seguente vengono descritti campi fissi di 10 o 6 caratteri ognuno. Il file di formato rappresenta queste lunghezze o larghezze dei campi rispettivamente come LENGTH="10" e LENGTH="6". Ogni riga dei file di dati termina con una combinazione di ritorno a capo e avanzamento riga, {CR}{LF}, rappresentata nel file di formato come 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>

Esempi aggiuntivi

Per ulteriori esempi di file di formato XML e non XML, vedere gli argomenti seguenti:

Vedere anche

Concetti

Informazioni sui file di formato XML
Informazioni sui file di formato non XML
Sintassi dello schema per file di formato XML
Utilizzo dei file di formato

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Nuovo contenuto:
  • Aggiunta dell'esempio "F: Importazione di campi a lunghezza fissa o a larghezza fissa".

14 aprile 2006

Nuovo contenuto:
  • Aggiunta di collegamenti ad altri argomenti che includono esempi di file di formato XML che eseguono il mapping dei campi a colonne durante l'importazione di massa.