Creazione di un file di formato

Quando si esegue l'importazione bulk 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 di ogni campo in un file di dati relativo a tale tabella. Un file di formato costituisce un sistema flessibile per creare file di dati conformi con altri formati, o che è possibile rendere conformi con modifiche limitate, oppure per leggere i file da programmi software diversi.

SQL Server 2005 e versioni successive supportano due tipi di file di formato, i file di formato non XML e i file di formato XML. Il formato non XML è il formato originale supportato dalle versioni precedenti di SQL Server.

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 i file essi offrono numerosi vantaggi rispetto ai file di formato non XML. Per ulteriori informazioni, vedere Introduzione ai file di formato.

Nota

In SQL Server 2008 R2 il numero di versione dell'utilità bcp (Bcp.exe) è 10.50, mentre il numero di versione assegnato ai nuovi file di formato è 10.0, ossia lo stesso di SQL Server 2008. La versione dell'utilità bcp utilizzata per leggere un file di formato deve essere uguale o successiva alla versione del file di formato. L'utilità bcp di SQL Server 2008 è ad esempio in grado di leggere un file di formato versione 9.0 generato dall'utilità bcp di SQL Server 2005; tuttavia l'utilità bcp di SQL Server 2005 non è in grado di leggere un file di formato versione 10.0 generato dall'utilità bcp di SQL Server 2008 R2 o di SQL Server 2008.

In questo argomento viene descritto come utilizzare l'utilità bcp per creare un file di formato per una tabella specifica. Il file di formato è basato sull'opzione relativa al tipo di dati specificata (-n, -c, -w o -N) e sui delimitatori della tabella o della vista.

Creazione di un file di formato non XML

Per utilizzare un comando bcp per creare un file di formato, specificare l'argomento format e utilizzare nul anziché un percorso del file di dati. L'opzione format richiede inoltre l'opzione -f, come nell'esempio seguente:

bcptable_or_viewformat nul -fformat_file_name

Nota

Per distinguere un file di formato non XML, è consigliabile utilizzare l'estensione fmt, ad esempio MyTable.fmt.

Per informazioni sulla struttura e sui campi dei file di formato non XML, vedere Informazioni sui file di formato non XML.

Esempi

In questa sezione sono disponibili gli esempi seguenti che illustrano come utilizzare i comandi bcp per creare un file di formato non XML:

  • A. Creazione di un file di formato non XML per dati nativi

  • B. Creazione di un file di formato non XML per dati di tipo carattere

  • C. Creazione di un file di formato non XML per dati nativi Unicode

  • D. Creazione di un file di formato non XML per dati di tipo carattere Unicode

Negli esempi viene utilizzata la tabella HumanResources.Department del database di esempio AdventureWorks2008R2. La tabella HumanResources.Department contiene quattro colonne, ovvero DepartmentID, Name, GroupName e ModifiedDate.

Nota

Adventure Works Cycles è un'azienda manifatturiera fittizia utilizzata per esemplificare concetti e scenari relativi ai database. 

A. Creazione di un file di formato non XML per dati nativi

Nell'esempio seguente viene creato un file di formato XML, Department-n.xml, per la tabella HumanResources.Department del database AdventureWorks2008R2. Nel file di formato vengono utilizzati tipi di dati nativi. Il contenuto del file di formato generato viene visualizzato dopo il comando.

Per il comando bcp sono disponibili i qualificatori seguenti:

Qualificatori

Descrizione

formatnul-fformat_file

Specifica il file di formato non XML.

-n

Specifica i tipi di dati nativi.

-T

Specifica che l'utilità bcp si connette a SQL Server tramite una connessione trusted utilizzando la sicurezza integrata. Se non si specifica -T, per eseguire correttamente l'accesso è necessario specificare le opzioni -U e -P.

Al prompt dei comandi di Windows digitare il comando bcp seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -T -n -f Department-n.fmt

Il file di formato generato, Department-n.fmt, contiene le informazioni seguenti:

10.0
4
1       SQLSMALLINT   0       2       ""   1     DepartmentID                 ""
2       SQLNCHAR      2       100     ""   2     Name                         SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     GroupName                    SQL_Latin1_General_CP1_CI_AS
4       SQLDATETIME   0       8       ""   4     ModifiedDate                 ""

Per ulteriori informazioni, vedere Informazioni sui file di formato non XML.

B. Creazione di un file di formato non XML per dati di tipo carattere

Nell'esempio seguente viene creato un file di formato XML, Department.fmt, per la tabella HumanResources.Department del database AdventureWorks2008R2. Nel file di formato vengono utilizzati formati di dati di tipo carattere e un carattere di terminazione del campo non predefinito (,). Il contenuto del file di formato generato viene visualizzato dopo il comando.

Per il comando bcp sono disponibili i qualificatori seguenti:

Qualificatori

Descrizione

formatnul-fformat_file

Specifica un file di formato non XML.

-c

Specifica i dati di tipo carattere.

-T

Specifica che l'utilità bcp si connette a SQL Server tramite una connessione trusted utilizzando la sicurezza integrata. Se non si specifica -T, per eseguire correttamente l'accesso è necessario specificare le opzioni -U e -P.

Al prompt dei comandi di Windows digitare il comando bcp seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -c -f Department-c.fmt -T

Il file di formato generato, Department-c.fmt, contiene le informazioni seguenti:

9.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID                 ""
2       SQLCHAR       0       100     "\t"     2     Name                         SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName                    SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate                 ""

Per ulteriori informazioni, vedere Informazioni sui file di formato non XML.

C. Creazione di un file di formato non XML per dati nativi Unicode

Per creare un file di formato non XML per i dati nativi Unicode della tabella HumanResources.Department, utilizzare il comando seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -T -N -f Department-n.fmt

Per ulteriori informazioni sull'utilizzo dei dati nativi Unicode, vedere Utilizzo del formato Unicode nativo per importare o esportare dati.

D. Creazione di un file di formato non XML per dati di tipo carattere Unicode

Per creare un file di formato non XML per i dati di tipo carattere Unicode della tabella HumanResources.Department che utilizza i caratteri di terminazione predefiniti, utilizzare il comando seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -T -w -f Department-w.fmt

Per ulteriori informazioni sull'utilizzo dei dati di tipo carattere Unicode, vedere Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati.

Creazione di un file di formato XML

Per utilizzare un comando bcp per creare un file di formato, specificare l'argomento format e utilizzare nul anziché un percorso del file di dati. L'opzione format richiede sempre l'utilizzo dell'opzione -f. Per creare un file di formato XML, è inoltre necessario specificare l'opzione -x, come nell'esempio seguente:

bcptable_or_viewformat nul-fformat_file_name-x

Nota

Per distinguere un file di formato XML, è consigliabile utilizzare l'estensione xml, ad esempio MyTable.xml.

Per informazioni sulla struttura e sui campi dei file di formato XML, vedere Informazioni sui file di formato XML. Per informazioni sulla sintassi, vedere Sintassi dello schema per file di formato XML. Per alcuni esempi, vedere File di formato XML di esempio.

Esempi

In questa sezione sono disponibili gli esempi seguenti, in cui viene illustrato come utilizzare i comandi bcp per creare un file di formato XML:

  • A. Creazione di un file di formato XML per dati di tipo carattere

  • B. Creazione di un file di formato XML per dati nativi

Negli esempi viene utilizzata la tabella HumanResources.Department del database di esempio AdventureWorks2008R2. La tabella HumanResources.Department contiene quattro colonne, ovvero DepartmentID, Name, GroupName e ModifiedDate.

Nota

Adventure Works Cycles è un'azienda manifatturiera fittizia utilizzata per esemplificare concetti e scenari relativi ai database. 

A. Creazione di un file di formato XML per dati di tipo carattere

Nell'esempio seguente viene creato un file di formato XML, Department.xml, per la tabella HumanResources.Department del database AdventureWorks2008R2. Nel file di formato vengono utilizzati formati di dati di tipo carattere e un carattere di terminazione del campo non predefinito (,). Il contenuto del file di formato generato viene visualizzato dopo il comando.

Per il comando bcp sono disponibili i qualificatori seguenti:

Qualificatori

Descrizione

formatnul-fformat_file-x

Specifica il file di formato XML.

-c

Specifica i dati di tipo carattere.

-t,

Specifica la virgola (,) come carattere di terminazione del campo.

NotaNota
Se il file di dati utilizza il carattere di terminazione predefinito del campo (\t), l'opzione -t non è necessaria.

-T

Specifica che l'utilità bcp si connette a SQL Server tramite una connessione trusted utilizzando la sicurezza integrata. Se non si specifica -T, per eseguire correttamente l'accesso è necessario specificare le opzioni -U e -P.

Al prompt dei comandi di Windows digitare il comando bcp seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -c -x -f Department-c..xml –t, -T

Il file di formato generato, Department-c.xml, contiene gli elementi XML 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="24"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
 </ROW>
</BCPFORMAT>

Per informazioni sulla sintassi di questo file di formato, vedere Sintassi dello schema per file di formato XML. Per informazioni sui dati di tipo carattere, vedere Importazione ed esportazione di dati in base al formato carattere.

B. Creazione di un file di formato XML per dati nativi

Nell'esempio seguente viene creato un file di formato XML, Department-n.xml, per la tabella HumanResources.Department del database AdventureWorks2008R2. Nel file di formato vengono utilizzati tipi di dati nativi. Il contenuto del file di formato generato viene visualizzato dopo il comando.

Per il comando bcp sono disponibili i qualificatori seguenti:

Qualificatori

Descrizione

formatnul-fformat_file-x

Specifica il file di formato XML.

-n

Specifica i tipi di dati nativi.

-T

Specifica che l'utilità bcp si connette a SQL Server tramite una connessione trusted utilizzando la sicurezza integrata. Se non si specifica -T, per eseguire correttamente l'accesso è necessario specificare le opzioni -U e -P.

Al prompt dei comandi di Windows digitare il comando bcp seguente:

bcp AdventureWorks2008R2.HumanResources.Department format nul -x -f Department-n..xml -n -T

Il file di formato generato, Department-n.xml, contiene gli elementi XML 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="NativeFixed" LENGTH="2"/>
  <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="NativeFixed" LENGTH="8"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
 </ROW>
</BCPFORMAT>

Per informazioni sulla sintassi di questo file di formato, vedere Sintassi dello schema per file di formato XML. Per ulteriori informazioni sull'utilizzo dei dati nativi, vedere Utilizzo del formato nativo per l'importazione o l'esportazione di dati.

Mapping tra campi dati e colonne della tabella

Un file di formato creato da bcp descrive tutte le colonne della tabella in ordine. È possibile modificare un file di formato per spostare o omettere righe della tabella. In questo modo, è possibile personalizzare un file di formato in base a un file di dati i cui campi non sono mappati direttamente alle colonne della tabella. Per ulteriori informazioni, vedere gli argomenti seguenti: