Usare file in formato non XML (SQL Server)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di sistemi analitici (PDW)

In SQL Server sono supportati due tipi di file di formato per l'esportazione e l'importazione bulk: 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 Impostazione dei formati di dati per la compatibilità con bcp (SQL Server).

Nota

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

Nota

Questa sintassi, incluso l’inserimento in blocco, non è supportata in Azure Synapse Analytics. In Azure Synapse Analytics e in altre integrazioni della piattaforma database cloud, lo spostamento dei dati si esegue 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.

Identifies the fields of a non-xml format file.

I campi Versione e Numero di colonne sono presenti una sola volta. I significati di questi campi 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 (10.0.x)

11.0 = SQL Server 2012 (11.x)

12.0 = SQL Server 2014 (12.x)

Il numero di versione viene riconosciuto solo dall'utilità 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, bcp di SQL Server 2012 (11.x) può leggere un file di formato versione 10.0 generato da bcp di SQL Server 2008 (10.0.x), ma bcp di SQL Server 2008 (10.0.x) non può leggere un file di formato versione 12.0 generato da bcp di SQL Server 2014 (12.x).
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 di file tramite 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 tramite 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 la lunghezza del campo tramite 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 sono disposte le colonne nella tabella di SQL Server. Se, ad esempio, il quarto campo del file di dati è mappato alla sesta colonna di una tabella di SQL Server, l'ordine delle colonne nel server per il quarto campo è 6.

Per impedire che una colonna della tabella riceva dati dal file di dati, impostare il valore dell'ordine delle colonne del server su 0.
Nome della colonna del server Nome della colonna copiata dalla tabella di 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, vedi l’elenco Attività correlate.

Esempio di 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 AdventureWorks2022 .

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 una figura in cui vengono illustrati i campi del file di formato in relazione a questo file di formato non XML di esempio, vedi Struttura dei file di formato non XML.

Attività correlate

Passaggi successivi