Utilizzo di un file di formato per escludere un campo di dati
È possibile che un file di dati contenga un numero di campi maggiore del numero di colonne presenti nella tabella. In questo argomento viene descritta la modifica dei file di formato XML e non XML per consentire l'utilizzo di un file di dati con un numero maggiore di campi tramite il mapping delle colonne della tabella ai campi dati corrispondenti e l'esclusione dei campi aggiuntivi.
[!NOTA] È possibile utilizzare un file di formato non XML o XML per eseguire un'importazione di massa di un file di dati nella tabella tramite un comando bcp, l'istruzione BULK INSERT o l'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...). Per ulteriori informazioni, vedere Utilizzo di un file di formato per l'importazione di massa dei dati.
File di dati e tabella di esempio
Gli esempi di file di formato modificati utilizzati in questo argomento sono basati sulla tabella e sui file di dati seguenti.
Tabella di esempio
Per gli esempi, è necessario che nel database di esempio AdventureWorks
venga creata una tabella myTestSkipField
basata sullo schema dbo
. Per creare la tabella, nell'editor di query di Microsoft SQL Server Management Studio eseguire il codice seguente:
USE AdventureWorks;
GO
CREATE TABLE myTestSkipField
(
PersonID smallint,
FirstName nvarchar(50) ,
LastName nvarchar(50)
)
GO
File di dati di esempio
Il file di dati myTestSkipField-c.dat
include i record seguenti:
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
1,Skipme,DataField3,DataField4
Per eseguire un'importazione di massa dei dati da myTestSkipField-c.dat
nella tabella myTestSkipField
, è necessario che il file di formato esegua le operazioni seguenti:
- Mapping del primo campo dati alla prima colonna
PersonID
. - Esclusione del secondo campo dati.
- Mapping del terzo campo dati alla seconda colonna
FirstName
. - Mapping del quarto campo dati alla terza colonna
LastName
.
File di formato non XML per un maggior numero di campi dati
Il file di formato seguente, myTestSkipField.fmt
, esegue il mapping dei campi di myTestSkipField-c.dat
alle colonne della tabella myTestSkipField
e utilizza il formato di dati carattere. Per escludere il mapping di una colonna, è necessario modificare il valore relativo all'ordine della colonna impostandolo su 0, come illustrato per la colonna ExtraField
nel file di formato.
Il file di formato myTestSkipField.fmt
contiene le informazioni seguenti:
9.0
4
1 SQLCHAR 0 7 "," 1 PersonID ""
2 SQLCHAR 0 100 "," 0 ExtraField SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS
[!NOTA] Per informazioni sulla sintassi dei file di formato non XML, vedere Informazioni sui file di formato non XML.
Esempi
Nell'esempio seguente viene utilizzata l'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...)
con il file di formato myTestSkipField.fmt
. Nell'esempio viene eseguita l'importazione di massa del file di dati myTestSkipField-c.dat
nella tabella myTestSkipField
. Per creare il file di dati e la tabella di esempio, vedere la sezione "File di dati e tabella di esempio" più indietro in questo argomento.
Nell'editor di query di SQL Server Management Studio eseguire il codice seguente:
USE AdventureWorks;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.fmt'
) AS t1;
GO
File di formato XML per un maggior numero di campi dati
Il file di formato utilizzato in questo esempio è basato su un altro file di formato, myTestSkipField.xml
, che utilizza il formato di dati carattere e i cui campi corrispondono esattamente per numero e ordine alle colonne della tabella myTestSkipField
. Per visualizzare il contenuto di questo file di formato, vedere Creazione di un file di formato.
Il file di formato seguente, myTestSkipField.xml
, esegue il mapping dei campi di myTestSkipField-c.dat
alle colonne della tabella myTestSkipField
e utilizza il formato di dati carattere.
Il file di formato myTestSkipField.xml
contiene le informazioni seguenti:
<?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="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Esempi
Nell'esempio seguente viene utilizzata l'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...)
con il file di formato myTestSkipField.Xml
. Nell'esempio viene eseguita l'importazione di massa del file di dati myTestSkipField-c.dat
nella tabella myTestSkipField
. Per creare il file di dati e la tabella di esempio, vedere la sezione "File di dati e tabella di esempio" più indietro in questo argomento.
Nell'editor di query di SQL Server Management Studio eseguire il codice seguente:
USE AdventureWorks;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.xml'
) AS t1;
GO
[!NOTA] Per informazioni sulla sintassi dello schema XML e per esempi aggiuntivi di file di formato XML, vedere Informazioni sui file di formato XML.
Vedere anche
Concetti
Utilizzo di un file di formato per ignorare una colonna di una tabella
Utilizzo di un file di formato per il mapping tra le colonne della tabella e i campi del file di dati
Altre risorse
Utilità bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)