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

Formato de caractere é recomendado quando você exporta dados em massa para um arquivo de texto que será usado em outro programa ou quando você importa dados em massa de um arquivo de texto que é gerado por outro programa.

ObservaçãoObservação

Quando você transfere dados em massa entre instâncias do Microsoft SQL Server e o arquivo de dados contém dados de caractere Unicode mas não caracteres estendidos ou DBCS, use o formato de caractere Unicode. Para obter mais informações, consulte Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server).

Formato de caractere usa o formato de dados de caractere para todas as colunas. Armazenar informações em formato de caractere é útil quando os dados são usados com outro programa, como uma planilha, ou quando os dados precisam ser copiados em uma instância de SQL Server de outro fornecedor de banco de dados como Oracle.

Considerações sobre usar o formato de caractere

Ao usar formato de caractere, considere o seguinte:

  • Por padrão, o utilitário bcp separa os campos dos dados de caractere com o caractere de guia e termina os registros com o caractere de nova linha. Para obter informações sobre como especificar terminadores alternativos, consulte Especificar terminadores de campo e linha (SQL Server).

  • Por padrão, antes da exportação ou importação em massa de dados do modo de caractere, são executadas as conversões seguintes:

    Direção da operação em massa

    Conversão

    Exportar

    Converte dados para representação de caractere. Se solicitado explicitamente, os dados são convertidos à página de código solicitada para colunas de caractere. Se nenhuma página de código for especificada, os dados de caractere serão convertidos usando a página de código OEM do computador do cliente.

    Importar

    Converte dados de caractere em representação nativa e traduz os dados de caractere da página de código do cliente para a página de código da(s) coluna(s) de destino, quando necessário.

  • Para evitar a perda de caracteres estendidos durante conversão, use formato de caractere Unicode ou especifique uma página de código.

  • São armazenados quaisquer dados sql_variant em um arquivo do formato de caractere sem metadados. Cada valor de dados é convertido ao formato char, de acordo com as regras de conversão de dados implícita. Quando importado em uma coluna sql_variant, os dados são importados como char. Quando importado em uma coluna com um tipo de dados diferente de sql_variant, os dados são convertidos de char usando conversão implícita. Para obter mais informações sobre conversão de dados, consulte Conversão de tipo de dados (Mecanismo de Banco de Dados).

  • O utilitário bcp exporta valores money como arquivos de dados do formato de caractere com quatro dígitos depois do ponto decimal e sem qualquer símbolo de agrupamento de dígito como separadores de vírgula. Por exemplo, uma coluna money que contém o valor 1,234,567.123456 é exportado em massa para um arquivo de dados como a cadeia de caracteres 1234567.1235.

Opções de comando para formato de caractere

Você pode importar dados de formato de caractere 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 ... instrução SELECT * FROM OPENROWSET(BULK...); é necessário especificar o formato dos dados em um arquivo de formato.

O formato de caractere tem suporte nas seguintes opções de linha de comando:

Comando

Opção

Descrição

bcp

-c

Faz com que o utilitário bcp use os dados de caractere dos dados.1

BULK INSERT

DATAFILETYPE = 'char'

Use o formato de caractere quando na importação em massa de dados.

1 Para carregar caractere (-c) em um formato compatível com versões anteriores de clientes do SQL Server, use a opção -V. Para obter mais informações, consulte Importar dados de formato de caractere e nativo de versões anteriores do SQL Server.

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 dados de caracteres em massa usando bcp e importar os mesmos dados em massa usando BULK INSERT.

Tabela de exemplo

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

USE AdventureWorks;
GO
CREATE TABLE myTestCharData (
   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 myTestCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestCharData

Usando o bcp para exportar em massa dados de caractere

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

Qualificadores

Descrição

-c

Especifica o formato do caractere.

-t ,

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

ObservaçãoObservação

O terminador de campo padrão é o caractere 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 da tabela myTestCharData em um arquivo de dados novo nomeado arquivo de dados myTestCharData-c.Dat que usa a vírgula (,) como terminador de campo. No prompt de comando do Microsoft Windows, digite:

bcp AdventureWorks..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

Usando BULK INSERT para importar dados de caractere em massa

Os exemplos a seguir usam BULK INSERT para importar os dados no arquivo de dados myTestCharData-c.Dat na tabela myTestCharData. No Editor de Consultas do SQL Server Management Studio, execute:

USE AdventureWorks;
GO
BULK INSERT myTestCharData 
   FROM 'C:\myTestCharData-c.Dat' 
   WITH (
      DATAFILETYPE='char',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestCharData;
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

Importar dados de formato de caractere e nativo de versões anteriores do SQL Server