Partilhar via


Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server)

O formato de caractere Unicode é recomendado para transferir em massa dados entre várias instâncias do 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 Suporte a agrupamentos e a Unicode.

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

Opções de comando para formato de caractere Unicode

Você pode importar dados de formato de caractere Unicode para uma tabela usando 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 ... instrução 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 (SQL Server).

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 AdventureWorks2012 no esquema dbo. Antes de executar os exemplos, é necessário criar essa tabela. Para criar esta tabela, no Editor de Consultas do SQL Server Management Studio, execute:

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

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

INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3') 
        ,(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 bcp com a opção out e os seguintes qualificadores:

Qualificadores

Descrição

-w

Especifica 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 Especificar terminadores de campo e linha (SQL Server).

-T

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

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

Tarefas relacionadas

Para usar formatos de dados para importação ou exportação em massa

Consulte também

Referência

Utilitário bcp

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Tipos de dados (Transact-SQL)

Conceitos

Suporte a agrupamentos e a Unicode