Compartilhar via


utilitário bcp

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL database in Microsoft Fabric

O utilitário de cópia em massa (bcp) copia dados entre uma instância do SQL Server e um arquivo de dados em um formato especificado pelo usuário.

Use o utilitário bcp para importar um grande número de novas linhas para tabelas do SQL Server ou para exportar dados de tabelas para arquivos de dados. Exceto quando usado com a opção queryout, o utilitário não requer conhecimento de Transact-SQL. Para importar dados para uma tabela, você deve usar um arquivo de formato criado para essa tabela ou entender a estrutura da tabela e os tipos de dados válidos para suas colunas.

Para obter mais informações sobre qual versão do bcp está instalada em seu sistema, requisitos do sistema e como obter bcp, consulte Baixar e instalar o utilitário bcp.

Note

Os arquivos de dados bcp não incluem informações de esquema ou formato. Se você usar bcp para fazer backup de dados e, posteriormente, remover ou alterar a tabela de origem, precisará de uma definição de tabela idêntica ou de um arquivo de formato para importar os dados de volta.

Para as convenções de sintaxe usadas para a sintaxe bcp , consulte Transact-SQL convenções de sintaxe (Transact-SQL).

Como usar bcp

Para obter informações sobre como usar bcp, incluindo comandos de exemplo, consulte Como usar o utilitário bcp.

Usar bcp no Linux e no macOS

Para obter informações sobre como instalar as ferramentas de linha de comando no macOS e no Linux, consulte Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux.

Considerações sobre bcp no Linux e no macOS

  • O terminador de campo é uma tabulação (\t).

  • O terminador de linha é uma nova linha (\n).

  • Para transferências do SQL Server para o SQL Server, use o formato nativo (-n). Use o formato de caractere (-c) somente quando os dados forem cruzados para um sistema que não seja do SQL Server ou quando o arquivo de dados não deve conter caracteres estendidos. Para obter mais informações, consulte as práticas recomendadas do modo de caractere e do modo nativo.

  • Você deve usar aspas ou a barra invertida como escape (\) em um argumento de linha de comando. Por exemplo, para especificar uma nova linha como um terminador de linha personalizado, use um dos seguintes mecanismos:

    • -r\\n
    • -r"\n"
    • -r'\n'

Suporte a TDS 8.0

O SQL Server 2025 (17.x) apresenta suporte ao TDS 8.0 para o utilitário bcp .

Sintaxe

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -P password ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ server_name [ \instance_name ] ] ]
    [ -t field_term ]
    [ -T ]
    [ -U login_id ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

Opções de linha de comando

A tabela a seguir lista as opções de linha de comando disponíveis no bcp e quais sistemas operacionais eles dão suporte.

Opção de linha de comando Com suporte no Windows Com suporte no Linux e no macOS
Objeto e modo de transferência
[database_name.]esquema. {nome_da_tabela | nome_da_visão | "query"} Sim Sim
{nodata_file | saídadata_file | queryoutdata_file | formato nul} Sim Sim
-q Sim Sim
Conexão e autenticação
-S [server_name[\instance_name]] Sim Sim
-d database_name Sim Sim
- U login_id Sim Sim
-P senha Sim Sim
-G Autenticação do Microsoft Entra Sim Sim
-D Sim Sim
-K application_intent Sim Sim
-l login_timeout Sim Sim
-T Sim Sim
-Y[s| m| o] Sim 1 Sim 1
Representação de dados
-c Sim Sim
-C { ACP | OEM | RAW | code_page } Sim No
-n Sim Sim
-N Sim No
-w Sim Sim
-z No Sim 2
Formatar arquivos
-f format_file Sim Sim
-x Sim No
Envio em lote e desempenho
-a packet_size Sim Sim
-b batch_size Sim Sim
-h"hint [,... n]" Sim No
-m max_errors Sim Sim
-F first_row Sim Sim
-L last_row Sim Sim
-r row_term Sim Sim
-t field_term Sim Sim
Manipulação de valor
-k Sim Sim
-E Sim Sim
I/O de arquivos e log
-i input_file Sim No
-o output_file Sim No
-e err_file Sim Sim
Compatibilidade e controle de versão
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Sim No
-u Sim 1 Sim 1
Opções diversas
-R Sim Sim
-v Sim Sim

1 Requer bcp versão 18 ou posterior, que é fornecida com o SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 e versões posteriores.

Objeto e modo de transferência

database_name

O nome do banco de dados que contém a tabela ou exibição especificada. Se você não especificar esse parâmetro, o banco de dados padrão para o usuário será usado.

Você também pode especificar explicitamente o nome de banco de dados com -d.

schema

O nome do proprietário da tabela ou exibição. schema será opcional se o usuário que estiver executando a operação for o proprietário da tabela ou exibição especificada. Se você não especificar o esquema e o usuário que executa a operação não tiver a tabela ou exibição especificada, o SQL Server retornará uma mensagem de erro e a operação será cancelada.

table_name

Nome da tabela de destino ao importar dados para o SQL Server (in) e da tabela de origem ao exportar dados do SQL Server (out).

view_name

Nome da exibição de destino ao copiar dados no SQL Server (in) e da exibição de origem ao copiar dados do SQL Server (out). Quando usado como destino (in), uma exibição só terá suporte se todas as colunas se referirem à mesma tabela. Essa restrição não se aplica quando a exibição é usada como uma origem (out). Para obter mais informações sobre as restrições para copiar dados em exibições, confira INSERT.

"query"

Uma consulta do Transact-SQL que retorna um conjunto de resultados. Se a consulta retornar vários conjuntos de resultados, somente o primeiro conjunto de resultados será copiado no arquivo de dados; os conjuntos de resultados subsequentes serão ignorados. Coloque a consulta entre aspas duplas e qualquer coisa incorporada na consulta entre aspas simples. Você também deve especificar queryout ao copiar dados em massa de uma consulta.

A consulta pode fazer referência a um procedimento armazenado desde que todas as tabelas referenciadas no procedimento armazenado existam antes da execução da instrução bcp. Por exemplo, se o procedimento armazenado gerar uma tabela temporária, ocorrerá uma falha com a instrução bcp , pois a tabela temporária ficará disponível somente durante o tempo de execução e não durante o tempo de execução da instrução. Nesse caso, considere a inserção do resultado do procedimento armazenado em uma tabela e, em seguida, use bcp para copiar os dados da tabela em um arquivo de dados.

in

Copia dados de um arquivo para a tabela ou exibição do banco de dados. Especifica a direção da cópia em massa.

out

Copia dados da tabela ou exibição do banco de dados para um arquivo. Especifica a direção da cópia em massa.

Se você especificar um arquivo existente, o arquivo será substituído. Quando o utilitário bcp extrai dados, ele representa uma cadeia de caracteres vazia como um nulo e uma cadeia de caracteres nula como uma cadeia de caracteres vazia.

data_file

O caminho completo do arquivo de dados. Quando você importa dados em massa para o SQL Server, o arquivo de dados contém os dados a serem copiados para a tabela ou exibição especificada. Quando você exporta dados em massa do SQL Server, o arquivo de dados contém os dados copiados da tabela ou exibição. O caminho pode ter de 1 a 255 caracteres. O arquivo de dados pode conter no máximo 2^63 - 1 linhas.

queryout

Copia dados de uma consulta e deve ser especificado somente ao realizar cópia em massa de dados de uma consulta.

format

Cria um arquivo de formato com base na opção especificada (-n, -c, -w ou -N) e nos delimitadores da tabela ou exibição. Quando você copia dados em massa, o comando bcp pode recorrer a um arquivo de formato, o que libera você da necessidade de inserir novamente as informações de formato de forma interativa. A format opção requer a opção -f ; a criação de um arquivo de formato XML também requer a opção -x . Para obter mais informações, consulte Criar um arquivo de formato com bcp (SQL Server). Você deve especificar nul como o valor (format nul).

-q

Executa a SET QUOTED_IDENTIFIER ON instrução na conexão entre o utilitário bcp e uma instância do SQL Server. Use essa opção para especificar um nome de banco de dados, proprietário, tabela ou exibição que contenha um espaço ou aspas simples. Inclua todo o nome da tabela de três partes ou da exibição entre aspas duplas ("").

Para especificar um nome de banco de dados que contenha um espaço ou aspas simples, você deve usar a opção -q.

-q não se aplica a valores passados para -d.

Para obter mais informações, consulte a seção Comentários neste artigo.

Conexão e autenticação

-S [server_name[\instance_name]]

Especifica o nome da instância do SQL Server à qual se conectar ou, se você usar -D, um DSN.

Se você não especificar um servidor, o utilitário bcp se conectará à instância padrão do SQL Server no computador local. Você precisa dessa opção ao executar um comando bcp de um computador remoto na rede ou em uma instância nomeada local. Para se conectar à instância padrão do SQL Server em um servidor, especifique apenas server_name. Para se conectar a uma instância nomeada do SQL Server, especifique <server_name>\<instance_name>.

-d database_name

Especifica o banco de dados que deve ser conectado. Por padrão, o bcp se conecta ao banco de dados padrão. Se você especificar -d <database_name> e um nome de três partes (database_name.schema.table, passado como o primeiro parâmetro para bcp), ocorrerá um erro porque você não pode especificar o nome do banco de dados duas vezes. Se database_name começar com um hífen (-) ou uma barra (/), não adicione um espaço entre -d e o nome do banco de dados.

-U login_id

Especifica a ID de logon usada para conectar-se ao SQL Server.

Senha -P

Especifica a senha para a ID de logon. Se você não usar essa opção, o comando bcp solicitará uma senha. Se você usar essa opção no final do prompt de comando sem senha, o bcp usará a senha padrão (NULL).

Importante

Não use uma senha em branco. Use uma senha forte.

Para mascarar a senha, não especifique a opção -P junto com a opção -U. Em vez disso, depois de especificar bcp junto com a opção -U e outras opções (não especificar -P), pressione a tecla Enter e o comando solicitará uma senha. Esse método garante que sua senha será mascarada quando for inserida.

Se password começar com um hífen (-) ou uma barra (/), não adicione um espaço entre -P e o valor password.

No Linux e no macOS, quando usado com a opção -G sem -U, -P especifica um arquivo que contém um token de acesso do Microsoft Entra (v17.8 e versões posteriores). O arquivo de token deve estar no formato UTF-16LE (sem BOM). Para obter mais informações, consulte Autenticar com Microsoft Entra ID no bcp.

-G

Aplica-se a: Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, Banco de Dados SQL no Microsoft Fabric, Azure Synapse Analytics e SQL Server 2022 (16.x) e versões posteriores.

Essa opção é usada pelo cliente para especificar que o usuário está autenticado com a ID do Microsoft Entra. A -G opção requer a versão bcp 14.0.3008.27 ou versões posteriores. Para determinar a versão, execute bcp -v. Para obter mais informações, consulte Usar a autenticação do Microsoft Entra com o Banco de Dados SQL ou o Azure Synapse Analytics ou Autenticação no Banco de Dados SQL no Microsoft Fabric.

Para obter detalhes completos sobre a autenticação do Microsoft Entra no bcp, consulte Authenticate with Microsoft Entra ID in bcp.

-D

Faz com que o valor passado para a opção do bcp -S seja interpretada como um DNS (nome da fonte de dados). -D pode aparecer em qualquer lugar na linha de comando; ordenação relativa a -S não importa.

Um DSN pode ser usado para:

  • Insira opções de driver para simplificar as linhas de comando.
  • Imponha opções de driver que não são acessíveis de outra forma na linha de comando, como MultiSubnetFailover.
  • Ajude a proteger as credenciais confidenciais de serem detectáveis como argumentos de linha de comando.

Para obter mais informações, consulte o suporte de DSN no sqlcmd e bcp.

-K application_intent

Declara o tipo de carga de trabalho de aplicativo ao conectar-se a um servidor. O único valor possível é ReadOnly. Se você não especificar -K, o utilitário bcp não oferecerá suporte à conectividade com uma réplica secundária em um grupo de disponibilidade Always On. Para obter mais informações, consulte Descarregar carga de trabalho somente leitura para a réplica secundária de um grupo de disponibilidade Always On.

-l login_timeout

Especifica um tempo limite de logon. A opção -l especifica o número de segundos antes que um logon no SQL Server expire quando você tenta se conectar a um servidor. O tempo limite de logon padrão é de 15 segundos. O tempo limite do logon deve ser um número entre 0 e 65534. Se o valor fornecido não for numérico ou não se enquadrar nesse intervalo, o bcp gerará uma mensagem de erro. Um valor de 0 especifica um tempo limite infinito.

-T

Especifica que o utilitário bcp se conecta ao SQL Server com uma conexão confiável usando segurança integrada. As credenciais de segurança do usuário de rede, login_ide password não são necessárias. Se você não especificar -T, precisará especificar -U e -P para se conectar com sucesso.

Importante

Use -T somente ao se conectar ao SQL Server com uma conexão confiável integrada ao Windows. Ao se conectar ao Banco de Dados SQL do Azure ou ao Azure Synapse Analytics, a -T autenticação integrada do Windows não é suportada. Para autenticação no Microsoft Entra contra serviços do Azure ou no SQL Server 2022 (16.x) e versões mais recentes, use -G (consulte Autenticar com Microsoft Entra ID no bcp).

-Y[s|m|o]

Aplica-se a: bcp versão 18 e versões posteriores, que são fornecidas com o SQL Server 2025 (17.x).

Especifica se as conexões usam criptografia TLS na rede. -Y pode ser o (para Optional), m (para Mandatory, o padrão) ou s (para Strict). Se você não incluir -Y, então -Ym (for Mandatory) será o padrão.

-u

Aplica-se a: bcp versão 18 e versões posteriores, que são fornecidas com o SQL Server 2025 (17.x).

Confiar no certificado do servidor. Quando usado com a opção de criptografia para a conexão, habilita a criptografia usando um certificado de servidor autoassinado.

Representação de dados

-c

Executa a operação usando um tipo de dados de caractere. Essa opção não solicita cada campo. Ele usa char como o tipo de armazenamento, sem prefixos, e usa \t (caractere de tabulação) como o separador de campo e \r\n (caractere de nova linha) como o terminador de linha. -c não é compatível com -w.

Para obter mais informações, confira Usar o formato de caractere para importar ou exportar dados (SQL Server).

Para obter as práticas recomendadas, consulte as práticas recomendadas do modo de caractere e do modo nativo.

-C { ACP | OEM | RAW | code_page }

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Especifica a página de código dos dados no arquivo de dados. code_page só será relevante se os dados contiverem colunas char, varcharou text com valores de caractere maiores que 127 ou menores que 32.

Especifique um nome de ordenação para cada coluna em um arquivo de formato, exceto quando você quiser que a opção 65001 tenha prioridade sobre a ordenação ou especificação de página de código.

Valor da página de código Description
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Página de código padrão usada pelo cliente. Essa página de código será o padrão se você não especificar -C.
RAW Não ocorre nenhuma conversão de uma página de código para outra. Essa opção é a mais rápida porque não ocorre nenhuma conversão.
<code_page> Número de página de código específico, como 850.

As versões anteriores ao SQL Server 2016 (13.x) não dão suporte à página de código 65001 (codificação UTF-8). As versões a partir da 13 podem importar a codificação UTF-8 para versões anteriores do SQL Server.

-n

Executa a operação de cópia em massa usando os tipos de dados nativos (banco de dados) dos dados. Essa opção não solicita cada campo. Ele usa os valores nativos.

Para obter mais informações, confira Usar um formato nativo para importar ou exportar dados (SQL Server).

Para obter as práticas recomendadas, consulte as práticas recomendadas do modo de caractere e do modo nativo.

-N

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Executa a operação de cópia em massa usando os tipos de dados nativos (banco de dados) dos dados para dados de não caractere e caracteres Unicode para dados de caractere. Essa opção oferece um desempenho mais elevado alternativo à opção -w e deve ser usada para transferir dados de uma instância do SQL Server para outra usando um arquivo de dados. Ela não solicita informações para cada campo. Use essa opção quando estiver transferindo dados que contenham caracteres ANSI estendidos e quiser aproveitar o desempenho do modo nativo.

Para obter mais informações, confira Usar o formato nativo Unicode para importar ou exportar dados (SQL Server).

Se você exportar e depois importar dados no mesmo esquema de tabela usando bcp com -N, talvez seja exibido um aviso de truncamento, se houver uma coluna de caracteres não Unicode de comprimento fixo (por exemplo, char(10)).

É possível ignorá-lo. Um modo de resolver este aviso é usar -n em vez de -N.

-w

Executa a operação de cópia em massa usando caracteres Unicode. Essa opção não solicita cada campo. Ele usa nchar como o tipo de armazenamento, sem prefixos, \t (caractere de guia) como o separador de campo e \n (caractere de nova linha) como o terminador de linha. -w não é compatível com -c.

Para obter mais informações, consulte Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server).

-z

Aplica-se a: bcp (ODBC), somente Linux e macOS. Não há suporte para Windows.

Habilita suporte ao tipo de dados vetor no utilitário bcp. Esse recurso está desabilitado por padrão. Quando desabilitado, os dados de vetor são importados ou exportados como cadeias de caracteres de arrays de float JSON. Quando habilitado e ao conectar-se ao SQL Server 2025 (17.x) e versões posteriores, os dados de vetor são importados ou exportados no formato binário de vetor nativo.

Formatar arquivos

-f format_file

Especifica o caminho completo de um arquivo de formato. O significado dessa opção depende do ambiente no qual é usada, do seguinte modo:

  • Se você usar -f com a opção format , o format_file especificado será criado para a tabela ou exibição especificada. Para criar um arquivo de formato XML, especifique também a opção -x. Para obter mais informações, consulte Criar um arquivo de formato com bcp (SQL Server).

  • Se você usar -f com a opção in ou a opção out, será necessário um arquivo de formato existente.

    Note

    Usar um arquivo de formato com a opção in ou out é opcional. Se você não especificar a opção -f e não especificar-n, -c-wou -N, o comando solicitará informações de formato e permitirá que você salve suas respostas em um arquivo de formato. O nome do arquivo padrão é bcp.fmt.

Se format_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -f e o valor format_file.

-x

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Use esta opção nas opções format e -fformat_file. Ele gera um arquivo de formato baseado em XML em vez do arquivo de formato não XML padrão. A -x opção não funciona ao importar ou exportar dados. Ele gera um erro se usado sem format e -fformat_file.

Envio em lote e desempenho

-a packet_size

Especifica o número de bytes por pacote de rede que o cliente envia e recebe do servidor. Defina essa opção de configuração do servidor usando o SQL Server Management Studio ou o procedimento armazenado do sp_configure sistema. No entanto, você pode substituir a opção de configuração do servidor individualmente usando essa opção. packet_size pode ser de 4.096 bytes a 65.535 bytes. O padrão é 4096.

Aumentar o tamanho do pacote pode melhorar o desempenho das operações de cópia em massa. Se você solicitar um pacote maior, mas o servidor não puder concedê-lo, o padrão será usado. As estatísticas de desempenho geradas pelo utilitário bcp mostram o tamanho do pacote usado.

-b batch_size

Especifica o número de linhas por lote de dados importados. Cada lote é importado e registrado como uma transação separada que importa o lote inteiro antes de ser confirmado. Por padrão, bcp importa todas as linhas no arquivo de dados como um lote. Para distribuir as linhas entre vários lotes, especifique um batch_size que seja menor do que o número de linhas no arquivo de dados. Se a transação apresentar falha para qualquer lote, só serão revertidas as inserções do lote atual. Lotes já importados por transações confirmadas não são afetados por uma falha posterior.

A dica -b e a dica -h "ROWS_PER_BATCH=<bb>" são mutuamente exclusivas. Use -b quando quiser que o bcp controle o processamento em lote explicitamente ou use ROWS_PER_BATCH para orientar o otimizador do servidor ao processar os dados como uma única transação.

-h "hints [, ... n]"

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Especifica a dica ou as dicas a serem usadas durante uma importação em massa de dados em uma tabela ou exibição.

  • ORDER (coluna [ASC | DESC] [, ... n])

    A ordem de classificação dos dados no arquivo de dados. O desempenho de importação em massa melhorará se os dados que estão sendo importados forem classificados de acordo com o índice clusterizado na tabela, se houver. Se o arquivo de dados for classificado em uma ordem diferente, ou seja, diferente da ordem de uma chave de índice clusterizado ou se não houver nenhum índice clusterizado na tabela, a ORDER cláusula será ignorada. Os nomes de coluna fornecidos devem ser nomes de coluna válidos na tabela de destino. Por padrão, o bcp supõe que o arquivo de dados não está classificado. Para obter uma importação em massa otimizada, o SQL Server também valida que os dados importados sejam classificados.

  • ROWS_PER_BATCH = bb

    Número de linhas de dados por lote (como bb). Usado quando você não especifica -b, resultando em todo o arquivo de dados sendo enviado para o servidor como uma única transação. O servidor otimiza o carregamento em massa de acordo com o valor bb. Por padrão, ROWS_PER_BATCH é desconhecido.

  • KILOBYTES_PER_BATCH = cc

    Número aproximado de kilobytes de dados por lote (como cc). Por padrão, KILOBYTES_PER_BATCH é desconhecido.

  • TABLOCK

    Especifica que um bloqueio no nível de tabela de atualização em massa é adquirido durante a operação de carregamento em massa, caso contrário, um bloqueio no nível de linha é adquirido. Essa dica melhora significativamente o desempenho porque manter um bloqueio durante a operação de cópia em massa reduz a contenção de bloqueios na tabela. Você pode carregar uma tabela simultaneamente de vários clientes se a tabela não tiver índices e TABLOCK for especificada. Por padrão, a opção table lock on bulkload de tabela determina o comportamento de bloqueio. Para obter mais informações, consulte sp_tableoption.

    Note

    Se a tabela de destino for um índice columnstore clusterizado, a dica TABLOCK não será necessária para carregar por vários clientes simultâneos porque cada thread simultâneo recebe um rowgroup separado dentro do índice e carrega dados nele. Para obter mais informações, consulte índices Columnstore: visão geral.

  • CHECK_CONSTRAINTS

    Especifica que todas as restrições na tabela ou exibição de destino devem ser verificadas durante a operação de importação em massa. Sem a CHECK_CONSTRAINTS dica, quaisquer CHECK e FOREIGN KEY restrições são ignoradas e, após a operação, a restrição na tabela é marcada como não confiada.

    Note

    UNIQUE, PRIMARY KEY e NOT NULL são restrições sempre impostas.

    Em algum momento, você precisará verificar as restrições em toda a tabela. Se a tabela não estava vazia antes da operação de importação em massa, o custo de revalidar a restrição poderá exceder o custo de aplicar as restrições CHECK aos dados incrementais. Portanto, você geralmente pode habilitar a verificação de restrições durante uma importação incremental em massa.

    Uma situação na qual talvez você queira desabilitar as restrições (o comportamento padrão) é quando os dados de entrada contiverem linhas que violam as restrições. Ao desabilitar CHECK restrições, você pode importar os dados e, em seguida, usar instruções Transact-SQL para remover dados que não são válidos.

    Note

    A opção -mmax_errors não se aplica à verificação de restrição.

  • FIRE_TRIGGERS

    Quando você especifica essa opção com o argumento in, todos os triggers de inserção definidos na tabela de destino são executados durante a operação de cópia em massa. Se você não especificar FIRE_TRIGGERS, nenhum gatilho de inserção será executado. FIRE_TRIGGERS é ignorado para o out, queryoute format argumentos.

-m max_errors

Especifica o número máximo de erros de sintaxe que podem ocorrer antes que a operação bcp seja cancelada. Um erro de sintaxe implica em um erro de conversão de dados para o tipo de dados de destino. O max_errors total exclui todos os erros que o servidor só pode detectar, como violações de restrição.

Uma linha que o utilitário bcp não pode copiar é ignorada e contada como um erro. Se você não incluir essa opção, o valor padrão será 10.

Note

A opção -m não se aplica ao converter os tipos de dados money ou bigint.

- F first_row

Especifica o número da primeira linha que deve ser exportada de uma tabela ou importada de um arquivo de dados. Esse parâmetro requer um valor maior que (>) 0, mas menor que (<) ou igual ao número total de linhas. Se você não especificar esse parâmetro, o padrão será a primeira linha do arquivo.

first_row pode ser um inteiro positivo com um valor de até 2^63-1. -F first_row usa numeração baseada em 1.

-L última_linha

Especifica o número da última linha a ser exportada de uma tabela ou importada de um arquivo de dados. Esse parâmetro requer um valor maior que (>) 0, mas menor que (<) ou igual ao número da última linha. Se você não especificar esse parâmetro, o padrão será a última linha do arquivo.

last_row pode ser um inteiro positivo com um valor de até 2^63-1.

-r row_term

Especifica o terminador de linha. O padrão é \n (caractere de nova linha). Use esse parâmetro para substituir o terminador de linha padrão. Para obter mais informações, consulte Especificar terminadores de campo e linha (SQL Server).

Se você especificar o terminador de linha em notação hexadecimal em um comando bcp, o valor será truncado em 0x00. Por exemplo, se você especificar 0x410041, 0x41 será usado.

Se row_term começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -re o valor row_term.

-t field_term

Especifica o terminador de campo. O padrão é \t (caractere de tabulação). Use esse parâmetro para substituir o terminador de campo padrão. Para obter mais informações, consulte Especificar terminadores de campo e linha (SQL Server).

Se você especificar o terminador de campo em notação hexadecimal em um comando bcp, o valor será truncado em 0x00. Por exemplo, se você especificar 0x410041, 0x41 será usado.

Se field_term começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -t e o valor field_term.

Manipulação de valor

-k

Especifica que colunas vazias mantêm um valor nulo durante a operação, em vez de inserir quaisquer valores padrão para as colunas. Para obter mais informações, confira Manter valores nulos ou padrão durante a importação em massa (SQL Server).

-E

Especifica que a operação usa valores de identidade no arquivo de dados importado para a coluna de identidade. Se você não especificar -E, o SQL Server ignorará os valores de identidade desta coluna no arquivo de dados que está sendo importado e atribuirá automaticamente valores exclusivos com base nos valores de propagação e incremento especificados durante a criação da tabela. Para obter mais informações, confira DBCC CHECKIDENT.

Se o arquivo de dados não contiver valores para a coluna de identidade na tabela ou exibição, use um arquivo de formato para especificar que a coluna de identidade na tabela ou exibição deve ser ignorada ao importar dados. O SQL Server atribui automaticamente valores exclusivos para a coluna.

A opção -E tem um requisito de permissões especial. Para obter mais informações, consulte "Comentários", mais adiante neste artigo.

E/S do arquivo e registro em log

-i input_file

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Especifica o nome de um arquivo de resposta. O arquivo contém as respostas às perguntas do prompt de comando para cada campo de dados quando você realiza uma operação de cópia em massa usando o modo interativo (-n, -c, -w ou -N não especificado).

Se input_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -i e o valor input_file.

-o arquivo_de_saída

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Especifica o nome de um arquivo que recebe a saída redirecionada do prompt de comando.

Se output_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -o e o valor output_file.

-e err_file

Especifica o caminho completo de um arquivo de erro usado para armazenar as linhas que o utilitário bcp não puder transferir do arquivo para o banco de dados. As mensagens de erro do comando bcp vão para a estação de trabalho do usuário. Se você não usar essa opção, um arquivo de erro não será criado.

Se err_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -e e o valor err_file.

Compatibilidade e controle de versão

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

Aplica-se apenas a: Windows. Não há suporte para Linux e macOS.

Executa a operação de cópia em massa usando tipos de dados de uma versão anterior do SQL Server. Essa opção não solicita informações para cada campo; ela usa os valores padrão.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) e SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x)

Por exemplo, para gerar dados para tipos que o SQL Server 2000 (8.x) não dá suporte, mas foram introduzidos em versões posteriores, use a opção -V80 .

Para obter mais informações, consulte Importar dados de formato nativo e de caractere de versões anteriores do SQL Server.

Opções diversas

-R

Especifica que o utilitário bcp copia dados de moeda, data e hora no SQL Server usando o formato regional definido para a configuração de localidade do computador cliente. Por padrão, bcp ignora as configurações regionais.

-v

Relata o número de versão e os direitos autorais do utilitário bcp .

Observações

  • O utilitário bcp dá suporte a arquivos de dados nativos compatíveis com todas as versões com suporte do SQL Server.

  • O utilitário bcp exibe apenas os primeiros 512 bytes de uma mensagem de erro.

Permissions

Uma operação bcp out requer permissão SELECT para a tabela de origem.

Uma operação bcp in requer permissões mínimas de SELECT e INSERT na tabela de destino. Além disso, ALTER TABLE a permissão será necessária se qualquer uma das seguintes condições for verdadeira:

  • Existem restrições e a CHECK_CONSTRAINTS dica não é especificada.

    Desabilitar restrições é o comportamento padrão. Para habilitar restrições explicitamente, use a opção -h com a dica CHECK_CONSTRAINTS.

  • Os gatilhos existem e a dica FIRE_TRIGGERS não é especificada.

    Por padrão, os gatilhos não são disparados. Para disparar gatilhos explicitamente, use a opção -h com a dica FIRE_TRIGGERS.

  • Você usa a opção -E para importar valores de identidade de um arquivo de dados.

Obter ajuda

Contribua com a documentação do SQL

Você sabia que pode editar o conteúdo do SQL por conta própria? Ao fazer isso, além de melhorar nossa documentação, você também será creditado como um colaborador da página.

Para obter mais informações, consulte a documentação Edit Microsoft Learn.