Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati

È consigliabile utilizzare il formato carattere Unicode per il trasferimento bulk di dati tra più istanze di MicrosoftSQL Server tramite un file di dati contenente caratteri estesi o DBCS. Questo formato di dati consente di trasferire i dati da un server utilizzando una tabella codici diversa da quella del client che esegue l'operazione. In questi casi, l'utilizzo del formato di dati carattere Unicode offre i vantaggi seguenti:

  • Se i dati di origine e di destinazione sono di tipo Unicode, il formato carattere Unicode consente di mantenere tutti i dati di tipo carattere.

  • Se i dati di origine e di destinazione non sono di tipo Unicode, il formato carattere Unicode consente di ridurre al minimo la perdita dei caratteri estesi nei dati di origine che non possono essere rappresentati nella destinazione.

Per i file in formato carattere Unicode vengono rispettate le convenzioni dei file Unicode. I primi due byte del file sono rappresentati da numeri esadecimali, 0xFFFE. Tali byte hanno la funzione di indicatori per l'ordine dei byte e specificano se archiviare il byte più significativo come primo o ultimo byte del file.

Nota importanteImportante

Affinché un file di formato sia funzionante con un file di dati di formato carattere Unicode, è necessario che tutti i campi di input siano stringhe di testo Unicode, ovvero stringhe Unicode di dimensioni fisse o che terminano con un carattere.

I dati sql_variant archiviati in un file in formato carattere Unicode funzionano allo stesso modo di quelli archiviati in un file in formato carattere, con la differenza che vengono archiviati come dati nchar anziché char. Per ulteriori informazioni sul formato carattere, vedere Importazione ed esportazione di dati in base al formato carattere.

Per utilizzare caratteri di terminazione per campi e righe diversi da quelli predefiniti del formato carattere Unicode, vedere Impostazione dei caratteri di terminazione del campo e della riga.

Opzioni di comando per il formato carattere Unicode

Per importare dati in formato carattere Unicode in una tabella, è possibile utilizzare 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 Unicode è supportato dalle opzioni della riga di comando seguenti:

Comando

Opzione

Descrizione

bcp

- w

Utilizza il formato carattere Unicode.

BULK INSERT

DATAFILETYPE ='widechar'

Utilizza il formato carattere Unicode durante l'importazione bulk di dati.

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 formato carattere Unicode tramite bcp e l'importazione bulk degli stessi dati tramite BULK INSERT.

Tabella di esempio

Gli esempi richiedono che nel database di esempio AdventureWorks venga creata una tabella denominata myTestUniCharData in base allo schema dbo. Prima di eseguire gli esempi è necessario creare questa tabella. Per creare la tabella, nell'editor di query di SQL Server Management Studio eseguire:

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

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

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

Utilizzo di bcp per l'esportazione bulk di dati in formato carattere Unicode

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

Qualificatori

Descrizione

- w

Specifica il formato carattere Unicode.

-t,

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

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

-T

Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted utilizzando la protezione integrata. Se non si specifica -T, è necessario specificare le opzioni -U e -P per eseguire correttamente l'accesso.

Nell'esempio seguente viene eseguita l'esportazione bulk di dati in formato carattere Unicode dalla tabella myTestUniCharData in un nuovo file di dati denominato myTestUniCharData-w.Dat che utilizza la virgola (,) come carattere di terminazione del campo. Al prompt dei comandi di Microsoft Windows digitare:

bcp AdventureWorks..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

Utilizzo di BULK INSERT per l'importazione bulk di dati in formato carattere Unicode

Nell'esempio seguente viene utilizzata l'istruzione BULK INSERT per importare i dati del file di dati myTestUniCharData-w.Dat nella tabella myTestUniCharData. Nell'istruzione è necessario dichiarare il carattere di terminazione del campo non predefinito (,). Nell'editor di query di SQL Server Management Studio eseguire:

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