Share via


Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati (SQL Server)

È consigliabile usare il formato carattere Unicode per il trasferimento bulk di dati tra più istanze di SQL 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.

Importante

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 altre informazioni sul formato carattere, vedere Regole di confronto e supporto Unicode.

Per usare un carattere di terminazione di un campo o di riga diverso dall'impostazione predefinita fornita con il formato carattere Unicode, vedere Specificare caratteri di terminazione di campo e riga (SQL Server).

Opzioni di comando per il formato carattere Unicode

È possibile importare dati in formato carattere Unicode in una tabella usando 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 dati in un file di formato.

Il formato carattere Unicode è supportato dalle opzioni della riga di comando riportate di seguito:

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 altre informazioni, vedere Utilità bcp, BULK INSERT (Transact-SQL) o OPENROWSET (Transact-SQL).

Nota

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

Esempio

Gli esempi seguenti illustrano come eseguire l'esportazione in blocco di dati di tipo carattere Unicode con bcp e l'importazione in blocco degli stessi dati con BULK INSERT.

Tabella di esempio

Gli esempi richiedono la creazione di una tabella denominata myTestUniCharData table nel database di esempio AdventureWorks2012 nello dbo schema. Prima di eseguire le procedure illustrate negli esempi, è necessario creare la tabella. Per creare questa tabella, in SQL Server Management Studio Editor di query eseguire:

USE AdventureWorks2012;  
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')   
        ,(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, usare 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.

Nota: il carattere di terminazione del campo predefinito è il carattere Unicode della scheda (\t). Per altre informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).
-T Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted che usa la sicurezza integrata. Se non si specifica -T , è necessario specificare -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 immettere:

bcp AdventureWorks2012..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 (,). In SQL Server Management Studio Editor di query eseguire:

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

Attività correlate

Per utilizzare formati di dati per l'importazione o l'esportazione bulk

Vedere anche

Utilità bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Tipi di dati (Transact-SQL)
Regole di confronto e supporto Unicode