Uso do formato de caractere Unicode para importar ou exportar dados

O formato de caractere Unicode é recomendado para transferir em massa dados entre várias instâncias do Microsoft SQL Server usando um arquivo de dados com caracteres estendidos DBCS. O formato de dados de caractere Unicode permite exportar dados de um servidor usando uma página de código que difere da página de código usada pelo cliente que está executando a operação. Em tais casos, o uso do formato de caractere Unicode tem as seguintes vantagens:

  • Se os dados de origem e destino forem tipos de dados Unicode, o uso do formato de caractere Unicode preservará todos os dados de caractere.

  • se os dados de origem e destino não forem tipos de dados Unicode, o uso do formato de caractere Unicode minimizará a perda de caracteres estendidos nos dados de origem que não poderão ser representados no destino.

Os arquivos de dados em formato de caractere Unicode seguem as convenções para arquivos Unicode. Os primeiros dois bytes do arquivo são números hexadecimais, 0xFFFE. Esses bytes servem como marcas de ordem do byte, especificando se o byte de ordem alta é armazenado em primeiro ou por último no arquivo.

Observação importanteImportante

Para trabalhar com um arquivo de dados de caractere Unicode, todos os campos de entrada devem ser cadeias de caracteres de texto Unicode (isto é, sejam cadeias de caracteres Unicode de tamanho fixo ou terminadas por caractere).

Os dados sql_variant que são armazenados em um arquivo de dados no formato de caractere Unicode operam da mesma maneira que operam em um arquivo de dados no formato de caractere, exceto que os dados são armazenados como nchar em vez de dados char. Para obter mais informações sobre formato de caractere, consulte Usando formato de caractere para importar ou exportar dados.

Para usar um campo ou terminador de linha diferente do padrão que é proporcionado com formato de caractere Unicode, veja Especificando terminadores de campo e linha.

Opções de comando para formato de caractere Unicode

Você pode importar dados de formato de caractere Unicode em uma tabela que usa bcp, BULK INSERT ou INSERT ... SELECT * FROM OPENROWSET(BULK...). Para um comando bcp ou uma instrução BULK INSERT, você pode especificar o formato de dados na linha de comando. Para uma instrução INSERT ... SELECT * FROM OPENROWSET(BULK...) é necessário especificar o formato dos dados em um arquivo de formato.

Há suporte ao formato de caractere Unicode nas seguintes opções da linha de comando:

Comando

Opção

Descrição

bcp

-w

Usa o formato de caractere Unicode.

BULK INSERT

DATAFILETYPE ='widechar'

Usa o formato de caractere Unicode na importação em massa de dados.

Para obter mais informações, consulte Utilitário bcp, BULK INSERT (Transact-SQL) ou OPENROWSET (Transact-SQL).

ObservaçãoObservação

Como alternativa, você pode especificar a formatação por campo, em um arquivo de formato. Para obter mais informações, consulte Arquivos de formato para importação ou exportação de dados.

Exemplos

Os exemplos a seguir demonstram como exportar em massa dados de caractere Unicode usando bcp e importar em massa os mesmos dados usando BULK INSERT.

Tabela de exemplo

Os exemplos requerem que uma tabela denominada tabela myTestUniCharData seja criada no banco de dados de exemplo AdventureWorks2008R2 no esquema dbo. Antes de executar os exemplos, é necessário criar esta tabela. Para criar esta tabela, no Editor de Consultas do SQL Server Management Studio, execute:

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

Para preencher essa tabela e exibir o conteúdo resultante, execute as seguintes instruções:

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

Usando o bcp para exportar em massa dados de caractere Unicode

Para exportar dados da tabela para o arquivo de dados, use o bcp com a opção out e os seguintes qualificadores:

Qualificadores

Descrição

-w

Especfica o formato de caractere Unicode.

-t,

Especifica uma vírgula (,) como terminador de campo.

ObservaçãoObservação
O terminador de campo padrão é o caractere Unicode da guia (\t). Para obter mais informações, consulte Especificando terminadores de campo e linha.

-T

Especifica que o utilitário bcp se conecta a SQL Server com uma conexão confiável usando segurança integrada. Se -T não for especificado, será necessário especificar -U e -P para ter êxito no logon.

O exemplo seguinte exporta em massa dados em formato de caractere Unicode da tabela myTestUniCharData em um arquivo de dados novo nomeado arquivo de dados myTestUniCharData-w.Dat que usa a vírgula (,) como terminador de campo. No prompt de comando do Microsoft Windows, digite:

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

Usando BULK INSERT para importar em massa dados de caractere Unicode

O exemplo a seguir usa BULK INSERT para importar os dados no arquivo de dados myTestUniCharData-w.Dat para a tabela myTestUniCharData. O terminador de campo de não padrão (,) deve ser declarado na instrução. No Editor de Consultas do SQL Server Management Studio, execute:

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