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:
- Utilizzo di un file di formato per ignorare una colonna di una tabella
- Utilizzo di un file di formato per escludere un campo di dati
- Utilizzo di un file di formato per il mapping tra le colonne della tabella e i campi del file di dati
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
Cronologia modifiche
Versione | Cronologia |
---|---|
17 luglio 2006 |
|
14 aprile 2006 |
|