Utilizzo del formato Unicode nativo per importare o esportare dati

Il formato Unicode nativo risulta particolarmente utile quando è necessario copiare informazioni da un'installazione di MicrosoftSQL Server a un'altra. L'utilizzo del formato nativo per i dati non carattere consente di risparmiare tempo evitando di dover eseguire la conversione dei tipi di dati in formato carattere e viceversa. L'utilizzo del formato carattere Unicode per tutti i dati di tipo carattere consente di evitare la perdita dei caratteri estesi durante il trasferimento bulk dei dati tra server che utilizzano tabelle codici diverse. Un file di dati in formato nativo Unicode è leggibile con qualsiasi metodo di importazione bulk.

Il formato nativo Unicode è consigliato per i trasferimenti bulk di dati tra istanze multiple di SQL Server utilizzando un file di dati che include caratteri estesi o DBCS. Per i dati non carattere, il formato nativo Unicode utilizza i tipi di dati (database) nativi. Per i dati carattere, ad esempio char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max) e ntext, il formato nativo Unicode utilizza il formato di dati carattere Unicode.

I dati sql_variant memorizzati come SQLVARIANT in un file di dati in formato nativo Unicode vengono gestiti in modo analogo a quanto avviene per un file di dati in formato nativo, fatta eccezione per il fatto che i valori char e varchar sono convertiti in nchar e nvarchar, raddoppiando lo spazio necessario per le colonne interessate. I metadati originali vengono mantenuti e i valori riconvertiti nel tipo di dati char e varchar originale quando viene eseguita l'importazione bulk in una colonna di tabella.

[!NOTA]

Per ulteriori informazioni sul formato nativo, vedere Utilizzo del formato nativo per l'importazione o l'esportazione di dati.

Opzioni di comando per il formato nativo Unicode

È possibile importare dati in formato nativo Unicode in una tabella utilizzando 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 nativo Unicode è supportato dalle opzioni seguenti:

Comando

Opzione

Descrizione

bcp

-N

Determina l'utilizzo del formato nativo Unicode da parte dell'utilità bcp. Tale formato utilizza i tipi di dati (database) nativi per tutti i dati non carattere e il formato di dati carattere Unicode per tutti i dati carattere (char, nchar, varchar, nvarchar, text e ntext).

BULK INSERT

DATAFILETYPE ='widenative'

Utilizzare il formato Unicode nativo per l'importazione bulk dei 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

Nell'esempio seguente viene illustrata la procedura di esportazione bulk di dati nativi utilizzando bcp e di importazione bulk degli stessi dati utilizzando BULK INSERT.

Tabella di esempio

Gli esempi richiedono la creazione di una tabella denominata myTestUniNativeData nel database di esempio AdventureWorks all'interno dello schema dbo. Prima di eseguire gli esempi è necessario creare questa tabella. Nell'editor di query di SQL Server Management Studio eseguire:

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

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

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

Utilizzo di bcp per l'esportazione bulk di dati nativi

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

Qualificatori

Descrizione

-N

Specifica i tipi di dati nativi.

-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 dei dati in formato nativo dalla tabella myTestUniNativeData in un nuovo file di dati denominato myTestUniNativeData-N.Dat. Al prompt dei comandi di Microsoft Windows digitare:

bcp AdventureWorks..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T

Utilizzo di BULK INSERT per l'importazione bulk di dati nativi

Nell'esempio seguente viene utilizzato BULK INSERT per importare i dati dal file di dati myTestUniNativeData-N.Dat nella tabella myTestUniNativeData. Nell'editor di query di SQL Server Management Studio eseguire:

USE AdventureWorks;
GO
BULK INSERT myTestUniNativeData 
    FROM 'C:\myTestUniNativeData-N.Dat' 
   WITH (DATAFILETYPE='widenative'); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;
GO