Specificare i formati di dati per la compatibilità con bcp (SQL Server)

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

Questo articolo descrive gli attributi del formato dati, prompt specifici di campo e l'archiviazione dei dati dei singoli campi in un file non in formato XML con il

comando bcp di SQL Server. La comprensione di questi concetti può risultare utile per l'esportazione in massa di dati SQL Server a fini dell'importazione in un altro programma, ad esempio un'altra applicazione di database. I formati di dati predefiniti (native, character o Unicode) nella tabella di origine potrebbero non essere compatibili con il layout di dati previsto dall'altra applicazione. In questo caso, quando si esportano i dati è necessario descriverne il layout.

Nota

Se non si ha familiarità con i formati di dati per l'importazione o l'esportazione di dati, vedere Formati di dati per l'importazione o l'esportazione in massa (SQL Server).

Attributi di formato e dati di bcp

Il comando bcp consente di specificare la struttura di tutti i campi di un file di dati con i seguenti attributi di formato dati:

  • tipo di archiviazione di file

    Il tipo di archiviazione di file indica la modalità con la quale vengono archiviati i dati in un file. I dati possono essere esportati in un file usando il tipo di dati della tabella del database in cui si trovano (formato nativo), come caratteri (formato carattere) oppure usando qualsiasi tipo di dati nel caso in cui sia supportata la conversione implicita. È possibile ad esempio copiare il tipo smallint come int. I tipi di dati definiti dall'utente vengono esportati utilizzando il tipo di dati di base corrispondente. Per altre informazioni, vedere Specificare il tipo di archiviazione di file tramite bcp (SQL Server).

  • Lunghezza del prefisso

    Per fornire il tipo di archiviazione file con la massima compressione durante l'esportazione in blocco dei dati in formato nativo in un file di dati, il comando bcp inserisce davanti a ogni campo uno o più caratteri che ne indicano la lunghezza. Tali caratteri sono denominati caratteri per il prefisso di lunghezza. Per altre informazioni, vedere Specificare la lunghezza del prefisso nei file di dati tramite bcp (SQL Server).

  • Lunghezza del campo

    La lunghezza del campo indica il numero massimo di caratteri necessari per rappresentare i dati in formato carattere. Se i dati sono archiviati in formato nativo, la lunghezza del campo è già nota. Per altre informazioni, vedere Specificare la lunghezza del campo tramite bcp (SQL Server).

  • Carattere di terminazione del campo

    Nei campi dati di tipo carattere, i caratteri di terminazione facoltativi consentono di indicare la fine di ogni campo nel file di dati (tramite un carattere di terminazione del campo) e di ogni riga (tramite un carattere di terminazione della riga). I caratteri di terminazione indicano ai programmi che leggono il file il punto in cui termina il campo o la riga e inizia il campo o la riga successiva. Per altre informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).

Panoramica dei prompt specifici dei campi

Se un comando bcp interattivo contiene l'opzione in o out, ma non contiene l'opzione del file di formato (-f) o un'opzione di formato dati (-n, -c, -w o -N), per ciascuna colonna della tabella di origine o di destinazione il comando richiede uno alla volta tutti gli attributi precedenti. In ogni richiesta, il comando bcp offre un valore predefinito in base al tipo di dati di SQL Server della colonna di tabella. Accettare il valore predefinito per tutti i prompt equivale a specificare il formato nativo (-n) nella riga di comando. Ogni prompt mostra un valore predefinito fra parentesi: [predefinito]. Per accettare i valori predefiniti, premere INVIO. Per specificare un valore diverso da quello predefinito, immettere il valore desiderato al prompt.

Esempio

L'esempio seguente usa il comando bcp per l'esportazione in blocco interattiva dei dati dalla tabella HumanResources.myTeam al file myTeam.txt . Prima di eseguire l'esempio è necessario creare questa tabella. Per informazioni sulla tabella e sulla relativa modalità di creazione, vedere Tabella di esempio HumanResources.myTeam (SQL Server).

Il comando non specifica un file di formato né un tipo di dati. Ciò provoca la richiesta di informazioni di formato dati da parte di bcp . Al prompt dei comandi di Microsoft Windows immettere:

bcp AdventureWorks.HumanResources.myTeam out myTeam.txt -T

Per ogni colonna, bcp richiede valori specifici del campo. Nell'esempio seguente vengono illustrati i prompt specifici di campo per le colonne EmployeeID e Name della tabella e viene suggerito il tipo di archiviazione file predefinito (il formato nativo) per ogni colonna. Le lunghezze del prefisso delle colonne EmployeeID e Name sono rispettivamente 0 e 2. L'utente specifica una virgola (,) come carattere di terminazione di ogni campo.

Enter the file storage type of field EmployeeID [smallint]:

Enter prefix-length of field EmployeeID [0]:

Enter field terminator [none]:,

Enter the file storage type of field Name [nvarchar]:

Enter prefix length of field Name [2]:

Enter field terminator [none]:,

.

.

.

Per ogni colonna della tabella, in ordine e se necessario, vengono visualizzati prompt equivalenti.

Archiviazione di dati campo per campo in un file di formato non XML

Una volta specificate tutte le colonne della tabella, il comando bcp chiede se si vuole generare un file di formato non XML per l'archiviazione delle informazioni dei singoli campi appena inserite (vedere l'esempio precedente). Se si sceglie di generare un file di formato, è possibile usarlo ogni volta che si esportano dati da quella tabella o si importano dati di struttura simile in SQL Server.

Nota

Il file di formato può essere usato per eseguire l'importazione in massa dal file di dati a un'istanza di SQL Server o per eseguire l'esportazione in massa di dati dalla tabella senza dover nuovamente specificare il formato. Per altre informazioni, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).

Nell'esempio seguente viene creato un file di formato non XML denominato myFormatFile.fmt:

Do you want to save this format information in a file? [Y/n] y

Host filename: [bcp.fmt]myFormatFile.fmt

Il nome predefinito per il file di formato è bcp.fmt, ma è possibile specificare un nome diverso.

Nota

Per un file di dati che usa un unico formato dati per il tipo di archiviazione, ad esempio il formato carattere o nativo, è possibile creare rapidamente un file di formato senza esportare o importare dati usando l'opzione format . Questo approccio ha il vantaggio della semplicità e consente di creare un file di formato XML o non XML. Per altre informazioni, vedere Creare un file di formato (SQL Server).

Nessuno.

Passaggi successivi