Usando formato de caractere para importar ou exportar dados

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 Uso do formato de caractere Unicode para importar ou exportar dados.

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 Especificando terminadores de campo e linha.

  • 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. Para obter mais informações sobre como usar uma página de código, consulte Copiando dados entre agrupamentos diferentes.

  • 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 ... SELECT * FROM OPENROWSET(BULK...) instrução, é 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 SQL Server, use o comutador - V. Para obter mais informações, consulte Importando 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.

Exemplos

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

Tabela de exemplo

Os exemplos de importação em massa requerem que uma tabela denominada tabela myTestCharData seja criada no banco de dados do exemplo AdventureWorks2008R2 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 AdventureWorks2008R2;
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 o 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 Especificando terminadores de campo e linha.

-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, será necessário especificar -U e -P para ter êxito no logon.

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