Importazione ed esportazione di dati in base al formato carattere

È consigliabile adottare il formato carattere per l'esportazione bulk in file di testo utilizzati in altri programmi o per l'importazione bulk da file di testo creati in altri programmi.

[!NOTA]

Per eseguire il trasferimento bulk di file di dati contenenti caratteri Unicode e nessun carattere esteso o DBCS tra istanze di MicrosoftSQL Server, utilizzare il formato carattere Unicode. Per ulteriori informazioni, vedere Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati.

Quando si utilizza il formato carattere, in tutte le colonne viene applicato il formato dati di tipo carattere. L'archiviazione in formato carattere risulta utile quando i dati vengoo utilizzati in altri programmi, ad esempio in un foglio di calcolo, o quando è necessario copiare in un'istanza di SQL Server i dati di database di altri fornitori, ad esempio Oracle.

Considerazioni sull'utilizzo del formato carattere

Quando si utilizza il formato carattere, è necessario tenere presenti i fattori seguenti:

  • Per impostazione predefinita, quando si esegue l'utilità bcp i campi dei dati di tipo carattere vengono separati da un carattere di tabulazione e alla fine dei record viene inserito un carattere di nuova riga. Per informazioni sull'impostazione di caratteri di terminazione diversi, vedere Impostazione dei caratteri di terminazione del campo e della riga.

  • Per impostazione predefinita, prima dell'esportazione o dell'importazione bulk di dati in modalità carattere, vengono eseguite le conversioni seguenti:

    Direzione dell'operazione bulk

    Conversione

    Esportazione

    I dati vengono convertiti in rappresentazione dei caratteri. Se richiesto in modo esplicito, la conversione viene eseguita in base alla tabella codici specificata per le colonne di tipo carattere. Se non è stata specificata alcuna tabella codici, i dati di tipo carattere vengono convertiti in base alla tabella codici OEM del computer client.

    Importazione

    I dati di tipo carattere vengono convertiti in rappresentazione nativa, se necessario, e tradotti dalla tabella codici del client alla tabella codici delle colonne di destinazione.

  • Per impedire eventuali perdite di caratteri estesi durante la conversione, utilizzare il formato di carattere Unicode o specificare una tabella codici. Per ulteriori informazioni sull'utilizzo delle tabelle codici, vedere Copia di dati tra regole di confronto diverse.

  • I dati sql_variant archiviati in un file in formato carattere risultano privi di metadati. Ogni valore viene convertito nel formato char in base alle regole di conversione dei dati implicita. I dati importati in colonne sql_variant risultano di tipo char. I dati importati in colonne con tipo di dati diverso da sql_variant vengono convertiti dal tipo di dati char tramite una conversione implicita. Per ulteriori informazioni sulla conversione dei dati, vedere Conversione del tipo di dati (Motore di database).

  • L'utilità bcp esporta i valori money in file di dati in formato carattere con quattro cifre dopo il separatore dei decimali e senza simboli di raggruppamento delle cifre, quali i separatori delle migliaia. Ad esempio, una colonna money contenente il valore 1,234,567.123456 viene copiata in un file di dati come stringa di caratteri 1234567.1235 tramite l'esportazione bulk.

Opzioni del comando per il formato carattere

È possibile importare dati in formato carattere in una tabella tramite bcp, BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...). Per un comando bcp o un'istruzione BULK INSERT è possibile specificare il formato dei dati nella riga di comando. Per un'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...) è necessario specificare il formato dei dati in un file di formato.

Il formato carattere è supportato dalle opzioni della riga di comando seguenti:

Comando

Opzione

Descrizione

bcp

-c

Quando si esegue l'utilità bcp vengono utilizzati dati di tipo carattere.1

BULK INSERT

DATAFILETYPE ='char'

Durante l'importazione bulk dei dati viene applicato il formato carattere.

1 Per caricare dati di tipo carattere (-c) in un formato compatibile con versioni precedenti di client SQL Server, specificare l'opzione -V. Per ulteriori informazioni, vedere Importazione di dati in formato nativo e carattere da versioni precedenti di SQL Server.

Per ulteriori informazioni, vedere Utilità bcp, BULK INSERT (Transact-SQL) o OPENROWSET (Transact-SQL).

[!NOTA]

In alternativa, è possibile definire la formattazione per ogni singolo campo in un file di formato. Per ulteriori informazioni, vedere File di formato per l'importazione o l'esportazione di dati.

Esempi

Negli esempi seguenti vengono illustrate l'esportazione bulk di dati di tipo carattere tramite l'utilità bcp e l'importazione bulk degli stessi dati tramite l'istruzione BULK INSERT.

Tabella di esempio

Negli esempi viene presupposta la presenza della tabella myTestCharData all'interno dello schema dbo del database di esempio AdventureWorks. Prima di eseguire gli esempi, è necessario creare questa tabella. A tale scopo, nell'editor di query di SQL SQL Server Management Studio eseguire il codice seguente:

USE AdventureWorks;
GO
CREATE TABLE myTestCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Per popolare la tabella e visualizzare il contenuto risultante, eseguire le istruzioni seguenti:

INSERT INTO myTestCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestCharData

Esportazione bulk di dati di tipo carattere tramite bcp

Per esportare i dati dalla tabella al file di dati, utilizzare il comando bcp con l'opzione out e i qualificatori seguenti:

Qualificatori

Descrizione

-c

Specifica il formato carattere.

-t,

Specifica la virgola (,) come carattere di terminazione del campo.

NotaNota
Il valore predefinito è il carattere di tabulazione (\t). Per ulteriori informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga.

-T

Imposta la connessione dell'utilità bcp a SQL Server tramite una connessione trusted utilizzando la protezione integrata. Se si omette -T, è necessario specificare le opzioni -U e -P in modo da consentire la corretta esecuzione dell'accesso.

Nell'esempio seguente viene eseguita l'esportazione bulk di dati in formato carattere dalla tabella myTestCharData a un nuovo file di dati denominato myTestCharData-c.Dat in cui il carattere di terminazione dei campi è la virgola (,). Al prompt dei comandi di Microsoft Windows digitare:

bcp AdventureWorks..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

Importazione bulk di dati di tipo carattere tramite BULK INSERT

Nell'esempio seguente viene utilizzata l'istruzione BULK INSERT per l'importazione dei dati del file myTestCharData-c.Dat nella tabella myTestCharData. Nell'editor di query di SQL Server Management Studio eseguire:

USE AdventureWorks;
GO
BULK INSERT myTestCharData 
   FROM 'C:\myTestCharData-c.Dat' 
   WITH (
      DATAFILETYPE='char',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestCharData;
GO