Creare un file di formato con bcp (SQL Server)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Analytics Platform System (PDW)

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

Quando si esegue l'importazione in blocco in una tabella di SQL Server o si esportano in blocco dati da una tabella, è possibile usare un file di formato come sistema flessibile per la scrittura di file di dati. I file di formato richiedono nessuna modifica o modifiche minime per la conformità con altri file di dati da un altro prodotto software.

Limiti

La versione dell'utilità bcp (bcp.exe) usata per leggere un file di formato deve essere uguale o successiva alla versione usata per creare il file di formato. Ad esempio, bcp di SQL Server 2016 (13.x) può leggere un file di formato versione 12.0 generato da bcp di SQL Server 2014 (12.x), ma bcp di SQL Server 2014 (12.x) non può leggere un file di formato versione 13.0 generato da bcp di SQL Server 2016 (13.x).

Nota

Questa sintassi, incluso l'inserimento in blocco, non è supportata in Azure Synapse Analytics. In Azure Synapse Analytics e in altre integrazioni della piattaforma di database cloud, eseguire lo spostamento dei dati tramite l'istruzione COPY in Azure Data Factory o usando istruzioni T-SQL, come COPY INTO e PolyBase.

Creare file di formato

SQL Server supporta due tipi di file di formato, ovvero non XML e 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 file di formato, in quanto questo tipo di file offre numerosi vantaggi rispetto ai file di formato non XML.

Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi. Adventure Works Cycles è un'azienda manifatturiera fittizia usata per esemplificare concetti e scenari relativi ai database.

Creare un file di formato XML

Per usare un comando bcp per creare un file di formato, specificare l'argomento format e usare nul anziché un percorso del file di dati. L'opzione format richiede sempre l'opzione -f. Inoltre, per creare un file di formato XML è necessario anche specificare l'opzione -x, ad esempio bcp <table_or_view> format nul -f <format_file_name> -x.

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

Per informazioni sulla struttura e sui campi dei file di formato XML, vedere File in formato XML (SQL Server).

Esempi

Questa sezione contiene gli esempi seguenti che illustrano come usare i comandi bcp per creare un file di formato XML. La tabella HumanResources.Department contiene quattro colonne, ovvero DepartmentID, Name, GroupNamee ModifiedDate.

R. Creare 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 . 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
format nul -x -f <format_file> Specifica il file di formato XML.
-c Specifica i dati di tipo carattere.
-t, Specifica la virgola (,) come carattere di terminazione del campo.

Nota: se il file di dati usa il carattere di terminazione del campo predefinito (\t), l'opzione -t non è necessaria.
-T Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted che usa la sicurezza integrata. Se non si specifica -T, bisogna specificare -U e -P per eseguire correttamente l'accesso.

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

bcp AdventureWorks2022.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="http://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 File in formato XML (SQL Server). Per informazioni sui dati di tipo carattere, vedere Utilizzare il formato carattere per l'importazione o l'esportazione di dati (SQL Server).

B. Creare 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 . 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
format nul -x -f <format_file> Specifica il file di formato XML.
-n Specifica i tipi di dati nativi.
-T Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted che usa la sicurezza integrata. Se non si specifica -T, bisogna specificare -U e -P per eseguire correttamente l'accesso.

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

bcp AdventureWorks2022.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="http://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 File in formato XML (SQL Server). Per informazioni su come usare i dati nativi, vedere Utilizzare il formato nativo per importare o esportare dati (SQL Server).

Mappare i campi dati alle colonne della tabella

Un file di formato creato da bcpdescrive tutte le colonne della tabella in ordine. È possibile modificare un file di formato per spostare o omettere righe della tabella. É possibile personalizzare un file di formato in base a un file di dati i cui campi non eseguono il mapping direttamente alle colonne della tabella. Per altre informazioni, vedere gli articoli seguenti: