Condividi tramite


File di formato per l'importazione o l'esportazione di dati (SQL Server)

Quando si esegue l'importazione bulk dei dati in una tabella di SQL Server o l'esportazione bulk dei dati da una tabella, è possibile utilizzare un file di formato per archiviare le informazioni sul formato necessarie all'esportazione o all'importazione bulk dei dati. Sono incluse informazioni sul formato per ogni campo in un file di dati relativo a quella tabella.

In SQL Server 2012 vengono supportati due tipi di file di formato: formati XML e file di formato non XML. 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. In generale, i file di formato XML e non XML sono intercambiabili. È 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. Per ulteriori informazioni, vedere File in formato XML (SQL Server).

Contenuto dell'argomento:

  • Vantaggi dei file di formato

  • Esempi di file di formato

  • Quando è necessario un file di formato?

  • Attività correlate

Vantaggi dei file di formato

  • 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.

  • 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. I file di formato sono particolarmente utili quando è presente una mancata corrispondenza tra i campi nel file di dati e le colonne nella tabella.

Esempi di file di formato

Negli esempi seguenti viene illustrato il layout di un file di formato non XML e di un file di formato XML. Questi file di formato corrispondono alla tabella HumanResources.myTeam nel database di esempio AdventureWorks2012 . Questa tabella contiene quattro colonne: EmployeeID, Name, Title e ModifiedDate.

[!NOTA]

Per informazioni sulla tabella e sulla procedura per la sua creazione, vedere Tabella di esempio HumanResources.myTeam (SQL Server).

A.Utilizzo di un file di formato non XML

Il file di formato non XML seguente utilizza il formato di dati nativo di SQL Server per la tabella HumanResources.myTeam. Questo file di formato è stato creato utilizzando il seguente comando bcp.

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 ulteriori informazioni, vedere File in formato non XML (SQL Server).

[Torna all'inizio]

B.Utilizzo di un file di formato XML

Il seguente file di formato XML utilizza il formato nativo di dati di SQL Server per la tabella HumanResources.myTeam. Questo file di formato è stato creato utilizzando il comando bcp seguente.

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

Il file di formato contiene:

 <?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" 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 ulteriori informazioni, vedere File in formato XML (SQL Server).

[Torna all'inizio]

Quando è necessario un file di formato?

Un'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...) richiede sempre un file di formato.

  • Per bcp o BULK INSERT, in situazioni non complesse, l'utilizzo di un file di formato è facoltativo e solo raramente necessario. In situazioni di importazione bulk complesse, tuttavia, un file di formato è spesso necessario.

I file di formato sono necessari nei casi seguenti:

  • Viene utilizzato lo stesso file di dati come origine per più tabelle con schemi diversi.

  • I campi nel file di dati sono in numero diverso rispetto alle colonne della tabella di destinazione, ad esempio:

    • La tabella di destinazione include almeno una colonna per la quale un valore predefinito è definito o è consentito un valore NULL.

    • L'utente non dispone di autorizzazioni SELECT/INSERT su una o più colonne della tabella.

    • Un singolo file di dati è utilizzato con due o più tabelle con schemi diversi.

  • L'ordine delle colonne è diverso nel file di dati rispetto alla tabella.

  • I caratteri di terminazione o le lunghezze di prefisso sono diverse all'interno delle colonne del file di dati.

[!NOTA]

In assenza di un file di formato, se in un comando bcp viene specificata un'opzione di formato di dati (-n, -c, -w o -N) o se in un'operazione BULK INSERT viene specificata l'opzione DATAFILETYPE, il formato di dati specificato viene utilizzato come metodo predefinito per l'interpretazione dei campi del file di dati.

[Torna all'inizio]

Attività correlate

[Inizio pagina]

Vedere anche

Concetti

File in formato non XML (SQL Server)

File in formato XML (SQL Server)

Formati di dati per l'importazione o l'esportazione bulk (SQL Server)