File di formato per l'importazione o l'esportazione di dati (SQL Server)Format Files for Importing or Exporting Data (SQL Server)

Quando si importando dati in blocco in una tabella di SQL ServerSQL Server o si esportano dati in blocco da una tabella, è possibile usare un file di formato per archiviare le informazioni sul formato necessarie all'esportazione o all'importazione in blocco dei dati.When you bulk import data into a SQL ServerSQL Server table or bulk export data from a table, you can use a format file to store all the format information that is required to bulk export or bulk import data. Sono incluse informazioni sul formato per ogni campo in un file di dati relativo a quella tabella.This includes format information for each field in a data file relative to that table.

SQL Server 2017SQL Server 2017 supporta due tipi di file di formato: file di formato XML e file di formato non XML. supports two types of format files: XML formats and non-XML format files. In entrambi i tipi di file di formato XML e non XML sono contenute descrizioni di ogni campo in un file di dati; nei file di formato XML sono inoltre presenti descrizioni delle colonne della tabella corrispondente.Both non-XML format files and XML format files contain descriptions of every field in a data file, and XML format files also contain descriptions of the corresponding table columns. In generale, i file di formato XML e non XML sono intercambiabili.Generally, XML and non-XML format files are interchangeable. È tuttavia consigliabile utilizzare la sintassi XML per i nuovi file di formato, in quanto questo tipo di file offre numerosi vantaggi rispetto ai file di formato non XML.However, we recommend that you use the XML syntax for new format files because they provide several advantages over non-XML format files. Per altre informazioni, vedere File in formato XML (SQL Server).For more information, see XML Format Files (SQL Server).

Vantaggi dei file di formato Benefits of Format Files

  • Fornisce un sistema flessibile per la scrittura di file di dati che non richiede alcuna modifica o richiede modifiche minime per la conformità con altri formati di dati o la lettura di file di dati da un altro prodotto software.Provides a flexible system for writing data files that requires little or no editing to comply with other data formats or to read data files from other software.

  • Consente di eseguire l'importazione bulk dei dati senza necessità di aggiungere o eliminare dati superflui o di ripetere l'ordinamento dei dati esistenti nel file di dati.Enables you to bulk import data without having to add or delete unnecessary data or to reorder existing data in the data file. I file di formato sono particolarmente utili quando è presente una mancata corrispondenza tra i campi nel file di dati e le colonne nella tabella.Format files are particularly useful when a mismatch exists between fields in the data file and columns in the table.

Esempi di file di formato Examples of Format Files

Negli esempi seguenti viene illustrato il layout di un file di formato non XML e di un file di formato XML.The following examples show the layout of a non-XML format file and of an XML format file. Questi file di formato corrispondono alla tabella HumanResources.myTeam nel database di esempio AdventureWorks2012AdventureWorks2012 .These format files correspond to the HumanResources.myTeam table in the AdventureWorks2012AdventureWorks2012 sample database. Questa tabella contiene quattro colonne: EmployeeID, Name, Title e ModifiedDate.This table contains four columns: EmployeeID, Name, Title, and ModifiedDate.

Nota

Per informazioni su questa tabella e su come crearla, vedere Tabella di esempio HumanResources.myTeam (SQL Server).For information about this table and how to create it, see HumanResources.myTeam Sample Table (SQL Server).

A.A. Utilizzo di un file di formato non XMLUsing a non-XML format file

Il file di formato non XML seguente utilizza il formato di dati nativo di SQL ServerSQL Server per la tabella HumanResources.myTeam .The following non-XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. Questo file di formato è stato creato utilizzando il comando bcp seguente.This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T   
The contents of this format file are as follows: 9.0  
4  
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""  
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS  
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS  
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS  

Per altre informazioni, vedere File in formato non XML (SQL Server).For more information, see Non-XML Format Files (SQL Server).

B.B. Utilizzo di un file di formato XMLUsing an XML format file

Il seguente file di formato XML utilizza il formato nativo di dati di SQL ServerSQL Server per la tabella HumanResources.myTeam .The following XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. Questo file di formato è stato creato utilizzando il comando bcp seguente.This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T   

Il file di formato contiene:The format file contains:

 <?xml version="1.0"?>  
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
 <RECORD>  
  <FIELD ID="1" xsi:type="NativePrefix" LENGTH="1"/>  
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="4" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
 </RECORD>  
 <ROW>  
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>  
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>  
 </ROW>  
</BCPFORMAT>  

Per altre informazioni, vedere File in formato XML (SQL Server).For more information, see XML Format Files (SQL Server).

Quando è necessario un file di formato? When Is a Format File Required?

Un'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...) richiede sempre un file di formato.An INSERT ... SELECT * FROM OPENROWSET(BULK...) statement always requires a format file.

  • Per bcp o BULK INSERT, in situazioni non complesse, l'uso di un file di formato è facoltativo e solo raramente necessario.For bcp or BULK INSERT, in simple situations, using a format file is optional and rarely necessary. In situazioni di importazione bulk complesse, tuttavia, un file di formato è spesso necessario.However, for complex bulk-import situations, a format file is frequently required.

    I file di formato sono necessari nei casi seguenti:Format files are required if:

  • Viene utilizzato lo stesso file di dati come origine per più tabelle con schemi diversi.The same data file is used as a source for multiple tables that have different schemas.

  • I campi nel file di dati sono in numero diverso rispetto alle colonne della tabella di destinazione, ad esempio:The data file has a different number of fields that the target table has columns; for example:

    • La tabella di destinazione include almeno una colonna per la quale un valore predefinito è definito o è consentito un valore NULL.The target table contains at least one column for which either a default value is defined or NULL is allowed.

    • L'utente non dispone di autorizzazioni SELECT/INSERT su una o più colonne della tabella.The users do not have SELECT/INSERT permissions on one or more columns in the table.

    • Un singolo file di dati è utilizzato con due o più tabelle con schemi diversi.A single data file is used with two or more tables that have different schemas.

  • L'ordine delle colonne è diverso nel file di dati rispetto alla tabella.The column order is different for the data file and table.

  • I caratteri di terminazione o le lunghezze di prefisso sono diverse all'interno delle colonne del file di dati.The terminating characters or prefix lengths differ among the columns of the data file.

Nota

In assenza di un file di formato, se in un comando bcp viene specificata un'opzione di formato di dati (-n, -c, -wo -N) o se in un'operazione BULK INSERT viene specificata l'opzione DATAFILETYPE, il formato di dati specificato viene usato come metodo predefinito per l'interpretazione dei campi del file di dati.In the absence of a format file, if a bcp command specifies a data-format switch (-n, -c, -w, or -N) or a BULK INSERT operation specifies the DATAFILETYPE option, the specified data format is used as the default method of interpreting the fields of the data file.

Vedere ancheSee Also

File in formato non XML (SQL Server) Non-XML Format Files (SQL Server)
File in formato XML (SQL Server) XML Format Files (SQL Server)
Formati di dati per l'importazione o l'esportazione in blocco (SQL Server)Data Formats for Bulk Import or Bulk Export (SQL Server)