Creare un file di formato con bcp (SQL Server)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics 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 poche o nessuna modifica per la conformità con altri formati di dati o per leggere file di dati da altri programmi software.

Limiti

La versione dell'utilità bcp (bcp.exe) usata per leggere un file di formato deve essere la stessa o successiva a quella utilizzata per creare il file di format. Ad esempio, SQL Server 2025 (17.x) bcp può leggere un file in formato versione 16.0, generato da SQL Server 2022 (16.xbcp), ma SQL Server 2022 (16.x) bcp non può leggere un file in formato versione 17.0, che viene generato da SQL Server 2025 (17.xbcp).

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: formato non XML e 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 file di formato, in quanto questo tipo di file offre numerosi vantaggi rispetto ai file di formato non XML.

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects. Adventure Works Cycles è un'azienda manifatturiera fittizia usata per esemplificare concetti e scenari relativi ai database.

Crea un file di formattazione

Per usare bcp per creare un file di formato, specificare l'argomento format e usare nul invece di un percorso del file di dati. L'opzione format richiede sempre l'opzione -f .

Per creare un file in formato XML, devi specificare l'opzione -x , come bcp <table_or_view> format nul -f <format_file_name> -x.

Per distinguere un file in formato XML, si usa .xml come estensione nome file, ad esempio, MyTable.xml.

Per informazioni sulla struttura e i campi dei file in formato XML, vedi file in formato XML.

Esempi

Questa sezione contiene esempi che mostrano come usare bcp per creare un file di formato. La tabella HumanResources.Department contiene quattro colonne, ovvero DepartmentID, Name, GroupNamee ModifiedDate.

R. Crea un file di formato per i dati del carattere

Il seguente esempio crea un file di formato per la HumanResources.Department tabella utilizzando i formati dati dei caratteri.

Crea un file in formato XML chiamato Department-c.xml. Il file di formato utilizza un terminatore di campo non predefinito (,). La sezione seguente mostra il contenuto del file di formato generato.

Il comando bcp contiene i seguenti qualificatori.

Qualificatori Descrizione
format nul -x -f <format_file> Specifica il file di formato XML.
-c Specifica dati di 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 bcp si connette a SQL Server con una connessione affidabile utilizzando la sicurezza integrata. Se non specifichi -T, devi specificare -U e -P accedere con successo.

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

bcp AdventureWorks2025.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, vedi File di formato XML. Per informazioni sui dati dei caratteri, vedi Usa il formato del carattere per importare o esportare dati.

B. Crea un file di formato per i dati nativi

Il seguente esempio crea un file di formato per la HumanResources.Department tabella utilizzando tipi di dati nativi.

Crea un file in formato XML chiamato Department-n.xml. La sezione seguente mostra il contenuto del file di formato generato.

Il comando bcp contiene i seguenti qualificatori.

Qualificatori Descrizione
format nul -x -f <format_file> Specifica il file di formato XML.
-n Specifica i tipi di dati nativi.
-T Specifica che bcp si connette a SQL Server con una connessione affidabile utilizzando la sicurezza integrata. Se non specifichi -T, devi specificare -U e -P accedere con successo.

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

bcp AdventureWorks2025.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, vedi File di formato XML. Per informazioni su come utilizzare i dati nativi, vedi Usa il formato nativo per importare o esportare dati.

C. Creare 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 AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt

Per maggiori informazioni su come utilizzare i dati nativi Unicode, vedi Usa il formato nativo Unicode per importare o esportare dati.

D. Creare 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 AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt

Per maggiori informazioni su come utilizzare i dati dei caratteri Unicode, vedi Usa il formato di caratteri Unicode per importare o esportare dati.

E. Usare un file di formato con l'opzione della pagina di codice

Quando crei un file di formato usando bcp format, nel file di formato vengono scritte informazioni sulle regole di confronto e sulla tabella codici.

Il seguente file di formato di esempio per una tabella con 5 colonne include le regole di confronto.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0          Cyrillic_General_CS_AS
2  SQLCHAR         0       0       "\t"             2     c_1          Cyrillic_General_CS_AS
3  SQLCHAR         0       3000    "\t"             3     c_2          Cyrillic_General_CS_AS
4  SQLCHAR         0       5       "\t"             4     c_3          ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""

Se provi a importare dati in SQL Server usando bcp in -c -C65001 -f format_file ... o con BULK INSERTOPENROWSET o con FORMATFILE='format_file' CODEPAGE=65001 ..., le informazioni di collation o code page nel file di formato hanno priorità sull'opzione 65001.

Pertanto, se generi un file di format, devi eliminare manualmente le informazioni di collation dal file di formato generato prima di iniziare a importare i dati in SQL Server.

L'esempio seguente mostra il file di formato senza le informazioni di collation.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0              ""
2  SQLCHAR         0       0       "\t"             2     c_1              ""
3  SQLCHAR         0       3000    "\t"             3     c_2              ""
4  SQLCHAR         0       5       "\t"             4     c_3              ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""

Mappare i campi dati alle colonne della tabella

Un file di formato creato da bcp descrive tutte le colonne della tabella in ordine. Puoi modificare un file di formattazione per riorganizzare o omettere le colonne 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: