Usare file di formato non XML (SQL Server)

Si applica a: SQL Server (tutte le versioni supportate) Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

In SQL Server, due tipi di file di formato sono supportati per l'esportazione bulk e l'importazione di file di formato non XML e file di formato XML.

Vantaggi dei file di formato non XML

  • È possibile creare automaticamente un file di formato non XML specificando l'opzione format in un comando bcp .

  • Quando si specifica un file di formato esistente in un comando bcp , quest'ultimo utilizza i valori registrati nel file di formato e non richiede il tipo di archiviazione di file, la lunghezza del prefisso, la lunghezza del campo o il carattere di terminazione del campo.

  • È possibile creare un file di formato per un particolare tipo di dati quali dati di tipo carattere o dati nativi.

  • È possibile creare un file di formato non XML contenente attributi specificati in modo interattivo per ogni campo dati. Per altre informazioni, vedere Specificare i formati di dati per la compatibilità quando si usa bcp (SQL Server).

Nota

I file di formato XML offrono diversi vantaggi rispetto ai file di formato non XML. Per altre informazioni, vedere File di formato XML (SQL Server).

Nota

Questa sintassi, inclusa l'inserimento bulk, non è supportata in Azure Synapse Analytics. In Azure Synapse Analytics e 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, ad esempio COPY INTO e PolyBase.

Struttura dei file di formato non XML

Un file di formato non XML è un file di testo con una struttura specifica. Il file di formato non XML contiene informazioni sul tipo di archiviazione di file, sulla lunghezza del prefisso, sulla lunghezza del campo e sul carattere di terminazione del campo di ogni colonna della tabella.

Nella figura seguente vengono illustrati i campi del file di formato per un file di formato non XML di esempio.

Identifica i campi di un file di formato non xml.

I campi Versione e Numero di colonne sono presenti una sola volta. I loro significati sono descritti nella tabella seguente.

Campo del file di formato Descrizione
Versione Numero di versione dell'utilità bcp :

9,0 = SQL Server 2005 (9,x)

10,0 = SQL Server 2008

11.0 = SQL Server 2012 (11.x)

12.0 = SQL Server 2014 (12.x)

Il numero di versione viene riconosciuto solo da bcp, non da Transact-SQL.



Nota: 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, SQL Server 2012 (11.x)bcp può leggere un file di formato versione 10.0, generato da SQL Server 2008bcp, ma SQL Server 2008bcp non può leggere un file di formato versione 12.0, generato da SQL Server 2014 (12.x)bcp.
Numero di colonne Numero di campi del file di dati. Tutte le righe devono contenere lo stesso numero di campi.

Gli altri campi del file di formato descrivono i campi dati di cui viene eseguita l'importazione o l'esportazione bulk. Per ogni campo dati è necessaria una riga separata nel file di formato. Ogni riga del file di formato contiene i valori dei campi del file di formato descritti nella tabella seguente.

Campo del file di formato Descrizione
Ordine dei campi nel file host Numero che indica la posizione di ogni campo nel file di dati. Il primo campo della riga è 1 e così via.
Tipo di dati del file host Indica il tipo di dati archiviati in un determinato campo del file di dati. Per i file di dati ASCII, utilizzare SQLCHAR. Per i file di dati in formato nativo, utilizzare i tipi di dati predefiniti. Per altre informazioni, vedere Specificare il tipo di archiviazione file usando bcp (SQL Server).
Lunghezza del prefisso Numero di caratteri della lunghezza del prefisso per il campo. Le lunghezze del prefisso valide sono 0, 1, 2, 4 e 8. Per evitare di specificare la lunghezza del prefisso, impostarlo su 0. È necessario specificare una lunghezza per il prefisso se il campo contiene valori di dati NULL. Per altre informazioni, vedere Specificare la lunghezza del prefisso nei file di dati usando bcp (SQL Server).
Lunghezza dei dati del file host Lunghezza massima, in byte, del tipo di dati archiviati nel campo specifico del file di dati.

Se si sta creando un file di formato non XML per un file di testo delimitato, è possibile specificare il valore 0 per la lunghezza dei dati del file host di ogni campo dati. Quando viene importato un file di testo delimitato con una lunghezza del prefisso uguale a 0 e un carattere di terminazione, il valore relativo alla lunghezza del campo viene ignorato, in quanto lo spazio di archiviazione utilizzato dal campo equivale alla lunghezza dei dati più il carattere di terminazione.

Per altre informazioni, vedere Specificare lunghezza campo usando bcp (SQL Server).
Carattere di terminazione Delimitatore di separazione dei campi di un file di dati. I caratteri di terminazione più comuni sono la virgola (,), il carattere di tabulazione (\t) e i caratteri di fine riga (\r\n). Per altre informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).
Ordine delle colonne nel server Ordine in cui vengono visualizzate le colonne nella tabella SQL Server. Ad esempio, se il quarto campo nel file di dati esegue il mapping alla sesta colonna in una tabella SQL Server, l'ordine di colonna del server per il quarto campo è 6.

Per impedire a una colonna nella tabella di ricevere dati dal file di dati, impostare il valore dell'ordine di colonna del server su 0.
Nome della colonna del server Nome della colonna copiata dalla tabella SQL Server. Il nome effettivo del campo non è obbligatorio, ma il campo nel file di formato non può essere vuoto.
Regole di confronto a livello di colonna Regole di confronto utilizzate per archiviare i dati di tipo carattere e Unicode nel file di dati.

Nota

È possibile modificare un file di formato per consentire l'importazione bulk da un file di dati in cui il numero o l'ordine dei campi è diverso dal numero o dall'ordine delle colonne della tabella. Per altre informazioni, vedere l'elenco Attività correlate .

Esempio di un file di formato non XML

Nell'esempio seguente viene illustrato un file di formato non XML creato in precedenza (myDepartmentIdentical-f-c.fmt). Questo file descrive un campo dati di tipo carattere per ogni colonna della tabella HumanResources.Department nel database di esempio AdventureWorks2012 .

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

12.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     ""

Nota

Per un'illustrazione che mostra i campi del file di formato in relazione a questo file di formato non XML di esempio, vedere Struttura dei file di formato non XML.

Attività correlate

Passaggi successivi