Condividi tramite


Introduzione ai file di formato

Data aggiornamento: 17 luglio 2006

Per file di formato si intende un file utilizzato per archiviare informazioni sul formato per ogni campo in un file di dati in relazione a una tabella specificata. Un file di formato include tutte le informazioni sul formato necessarie per l'esportazione o l'importazione di massa dei dati. Un file di formato costituisce un sistema flessibile per creare file di dati compatibili con altri formati, o che è possibile rendere compatibili con modifiche limitate, oppure per leggere i file di dati da altri programmi.

In Microsoft SQL Server 2000 e versioni precedenti l'esportazione e l'importazione di massa supportano un solo tipo di file di formato, che rimane supportato in Microsoft SQL Server 2005. SQL Server 2005 supporta inoltre, in alternativa, i file di formato XML. I file di formato del tipo originale sono detti file di formato non XML.

Tutti i file di formato includono descrizioni di ogni campo di un file di dati. I file di formato XML includono inoltre descrizioni delle colonne di tabella corrispondenti. 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 essi offrono numerosi vantaggi rispetto ai file di formato non XML. Un file di formato XML ha le caratteristiche seguenti:

  • È autodescrittivo e semplice da leggere, creare e ampliare.
  • Include i tipi di dati delle colonne di destinazione.
    Consente la separazione tra la modalità di rappresentazione dei dati nel file di dati e il tipo di dati associato a ogni campo nel file. Ad esempio, se il file di dati include una rappresentazione dei caratteri dei dati, il tipo della colonna SQL corrispondente viene perduto.
    Il comando bcp e l'istruzione BULK INSERT utilizzano le colonne della tabella di destinazione per eseguire la conversione di tipo. Questo rende necessaria la presenza di una tabella di destinazione. La funzione OPENROWSET(BULK...), invece, si basa su un file di formato XML per la lettura dei dati da un file di dati. In questo caso, la tabella di destinazione è facoltativa.
  • Consente il caricamento di un campo contenente un unico tipo di dati LOB (Large Object) da un file di dati.

Per informazioni sul layout di ogni tipo di file di formato, vedere "Esempi" di seguito in questo argomento.

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 di massa complesse, tuttavia, un file di formato è spesso necessario. Quando ad esempio si importano dati da un file di dati in una tabella, i file di formato possono essere necessari nelle situazioni seguenti:

  • L'utente non dispone di autorizzazioni INSERT su alcune colonne della tabella di destinazione.
  • Gli stessi file di dati sono utilizzati come origine per più tabelle con schemi diversi.
  • Il file di dati include colonne in ordine diverso rispetto alla tabella di destinazione.
  • Gli elementi di dati nel file di dati hanno caratteri di terminazione o lunghezze di prefisso diverse.

I file di formato sono necessari nei casi seguenti:

  • 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 un comando bcp specifica un'opzione di formato di dati (-n, -c, -w o -N) o se un'operazione BULK INSERT specifica l'opzione DATAFILETYPE, il formato di dati specificato viene utilizzato come metodo predefinito per l'interpretazione dei campi del file di dati.

Esempi

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 AdventureWorks. Questa tabella contiene quattro colonne: EmployeeID, Name, Title e ModifiedDate.

[!NOTA] Per informazioni sulla tabella e sulla procedura per la sua creazione, vedere Creazione della tabella HumanResources.myTeam.

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 comando bcp seguente.

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 Informazioni sui file di formato non XML.

B. Utilizzo di un file di formato XML

Il file di formato XML seguente utilizza il formato di dati nativo 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 Informazioni sui file di formato XML.

Vedere anche

Concetti

Utilizzo dei file di formato

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Contenuto modificato: