Utilizzo di un file di formato per escludere un campo di dati (SQL Server)
È 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 bulk di un file di dati nella tabella tramite un comando bcp, l'istruzione BULK INSERT o l'istruzione INSERT ... Istruzione SELECT * FROM OPENROWSET(BULK...). Per ulteriori informazioni, vedere Utilizzo di un file di formato per l'importazione bulk dei dati (SQL Server).
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 AdventureWorks2012 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 AdventureWorks2012;
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 bulk 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 File in formato non XML (SQL Server).
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 bulk 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 AdventureWorks2012;
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 (SQL Server).
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 bulk 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 AdventureWorks2012;
GO
INSERT INTO myTestSkipField
SELECT *
FROM OPENROWSET(BULK 'C:\myTestSkipField-c.dat',
FORMATFILE='C:\myTestSkipField.xml'
) AS t1;
GO
[!NOTA]
Per informazioni sulla sintassi di XML Schema e per esempi aggiuntivi di file di formato XML, vedere File in formato XML (SQL Server).
Vedere anche
Riferimento
Concetti
Utilizzo di un file di formato per ignorare una colonna di una tabella (SQL Server)