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 Microsoft 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 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 AdventureWorks2008R2 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 AdventureWorks2008R2;
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.
Nota
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 sicurezza 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 AdventureWorks2008R2..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 AdventureWorks2008R2;
GO
BULK INSERT myTestUniCharData
FROM 'C:\myTestUniCharData-w.Dat'
WITH (
DATAFILETYPE='widechar',
FIELDTERMINATOR=','
);
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO