Partilhar via


Utilitário BCP

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

A utilidade de cópia em massa (bcp) copia em massa dados entre uma instância do SQL Server e um ficheiro de dados num formato especificado pelo utilizador.

Use a utilidade bcp para importar um grande número de novas linhas para tabelas do SQL Server ou para exportar dados de tabelas para ficheiros de dados. Exceto quando usado com a opção queryout, o utilitário não requer conhecimento do 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 mais informações sobre qual versão do BCP está instalada no seu sistema, requisitos do sistema e como obter o BCP, consulte Descarregar e instalar a utilidade BCP.

Note

Os ficheiros de dados BCP não incluem qualquer informação de esquema ou formato. Se usares bcp para fazer backup dos dados e depois eliminares ou alterares a tabela de origem, precisas de uma definição de tabela idêntica ou de um ficheiro de formato para importar os dados de volta.

Para as convenções sintácticas usadas para a sintaxe bcp, veja Transact-SQL convenções sintácticas (Transact-SQL).

Como usar o BCP

Para informações sobre como usar o bcp, incluindo comandos de exemplo, veja Como usar a utilidade bcp.

Usar o BCP no Linux e macOS

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

Considerações para bcp no Linux e macOS

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

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

  • Para transferências de SQL Server para SQL Server, use o formato nativo (-n). Use o formato de carácter (-c) apenas quando os dados entrarem num sistema que não seja SQL Server ou quando o ficheiro de dados não deveria conter caracteres estendidos. Para mais informações, consulte as melhores práticas para modos de personagem e modo nativo.

  • Deve citar ou evitar uma barra inversa (\) num argumento de linha de comandos. Por exemplo, para especificar uma nova linha como um delimitador 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) introduz suporte ao TDS 8.0 para a utilidade 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 da linha de comandos

A tabela a seguir lista as opções de linha de comando disponíveis em bcpe quais sistemas operacionais eles suportam.

Opção de linha de comando Suportado no Windows Compatível com Linux e macOS
Objeto e modo de transferência
[database_name.]esquema. {table_name | view_name | "consulta"} Sim Sim
{emdata_file | outdata_file | queryoutdata_file | format nul} Sim Sim
-q Sim Sim
Ligação e autenticação
-S [server_name[\instance_name]] Sim Sim
-d database_name Sim Sim
-U login_id Sim Sim
-P Palavra-passe Sim Sim
-Autenticação Microsoft Entra G 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 dos dados
-c Sim Sim
-C { ACP | OEM | RAW | code_page } Sim No
-n Sim Sim
-N Sim No
-w Sim Sim
-z No Sim2
Ficheiros de formato
-f format_file Sim Sim
-x Sim No
Agrupamento e desempenho
-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
-field_term Sim Sim
Gestão de valor
-k Sim Sim
-E Sim Sim
I/O de ficheiros e registo
-input_file Sim No
-o output_file Sim No
-e err_file Sim Sim
Compatibilidade e versionamento
-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 vem com 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 da base de dados que contém a tabela ou vista especificada. Se não especificar este parâmetro, é usada a base de dados padrão para o utilizador.

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

schema

O nome do proprietário da tabela ou vista. esquema é opcional se o utilizador que executa a operação possuir a tabela ou vista especificada. Se não especificar o esquema, e o utilizador que realiza a operação não for dono da tabela ou vista especificada, o SQL Server devolve uma mensagem de erro e a operação é cancelada.

table_name

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

view_name

O nome do modo de exibição de destino ao copiar dados para o SQL Server (in) e o modo de exibição de origem ao copiar dados do SQL Server (out). Quando usado como destino (in), uma vista só é suportada se todas as suas colunas se referirem à mesma tabela. Esta restrição não se aplica quando a vista é usada como fonte (out). Para obter mais informações sobre as restrições para copiar dados em vistas, consulte INSERT.

"query"

Uma consulta 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 para o arquivo de dados; os conjuntos de resultados subsequentes são ignorados. Use aspas duplas ao redor da consulta e aspas simples em torno de qualquer coisa incorporada na consulta. Também deve especificar queryout quando copiar em massa dados de uma consulta.

A consulta pode fazer referência a um procedimento armazenado desde que todas as tabelas referenciadas dentro do procedimento armazenado existam antes de executar a instrução bcp. Por exemplo, se o procedimento armazenado gerar uma tabela temp, a instrução bcp falhará porque a tabela temp estará disponível somente em tempo de execução e não em tempo de execução da instrução. Nesse caso, considere inserir os resultados 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 ficheiro para a tabela ou vista da base de dados. Especifica a direção da cópia em massa.

out

Copia dados da tabela ou vista da base de dados para um ficheiro. 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 nula e uma cadeia de caracteres nula como uma cadeia de caracteres vazia.

data_file

O caminho completo do arquivo de dados. Quando importas dados em massa para o SQL Server, o ficheiro contém os dados para copiar para a tabela ou vista especificada. Quando exportas dados em massa do SQL Server, o ficheiro de dados contém os dados copiados da tabela ou da vista. O caminho pode ter de 1 a 255 caracteres. O arquivo de dados pode conter um máximo de 2^63 - 1 linhas.

queryout

Copia dados de uma consulta e deve ser especificado apenas quando se faz cópia em massa de dados de uma consulta.

format

Cria um arquivo de formato com base na opção especificada (-n, -c, -wou -N) e nos delimitadores de tabela ou exibição. Ao copiar dados em massa, o comando bcp pode se referir a um arquivo de formato, o que evita que você reinsira informações de formato interativamente. A format opção requer essa -f opção; criar um ficheiro em formato XML também requer essa -x opção. 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 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 vista que contenha um espaço ou aspas simples. Coloque toda a tabela de três partes ou o nome da vista entre aspas ("").

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 aos valores passados para -d.

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

Conexão e autenticação

-S [server_name[\instance_name]]

Especifica o nome da instância do SQL Server para se ligar ou, se usar -D, a uma DSN.

Se não especificares um servidor, a utilidade bcp liga-se à instância padrão do SQL Server no computador local. Precisas desta opção ao executar um comando bcp a partir de um computador remoto na rede ou de uma instância local nomeada. Para se conectar à instância padrão do SQL Server em um servidor, especifique apenas server_name. Para se ligar a uma instância nomeada do SQL Server, especifique <server_name>\<instance_name>.

- d database_name

Especifica o banco de dados ao qual se conectar. Por defeito, o BCP liga-se à tua base de dados predefinida. Se especificar -d <database_name> e um nome em três partes (database_name.schema.table, passado como primeiro parâmetro para bcp), vai ocorrer um erro, porque não pode especificar o nome da base 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 se conectar ao SQL Server.

-P senha

Especifica a senha para o ID de login. Se não usares esta opção, o comando bcp solicitará uma palavra-passe. Se usar esta opção no final do prompt de comandos sem palavra-passe, o bcp usa a palavra-passe padrão (NULL).

Importante

Não utilize uma palavra-passe em branco. Use uma senha forte.

Para mascarar sua senha, não especifique a opção -P junto com a opção -U. Em vez disso, depois de especificar bcp juntamente com a -U opção e outras opções (não especifique -P), pressione a tecla Enter e o prompt de comandos solicita uma palavra-passe. Este método garante que a sua palavra-passe é mascarada quando é introduzida.

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

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

-G

Aplica-se a: Azure SQL Database, Azure SQL Managed Instance, base de dados SQL no Microsoft Fabric, Azure Synapse Analytics e SQL Server 2022 (16.x) e versões posteriores.

Este interruptor é usado pelo cliente para especificar que o utilizador está autenticado com o Microsoft Entra ID. O -G switch requer a versão BCP 14.0.3008.27 ou versões posteriores. Para determinar sua 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 detalhes completos sobre a autenticação Microsoft Entra em bcp, veja Autenticar com Microsoft Entra ID em bcp.

-D

Faz com que o valor passado para a opção bcp -S seja interpretado como um nome de fonte de dados (DSN). -D pode aparecer em qualquer lugar da linha de comandos; A ordem relativa a -S não importa.

Um DSN pode ser usado para:

  • Incorporar opções de drivers para simplificar linhas de comando.
  • Impor opções de drivers que não sejam acessíveis de outra forma na linha de comandos, como MultiSubnetFailover.
  • Ajudar a proteger credenciais sensíveis para que não sejam descobertas como argumentos de linha de comandos.

Para obter mais informações, veja Suporte a DSN em sqlcmd e bcp.

-K intenção_da_aplicação

Declara o tipo de carga de trabalho do aplicativo ao se conectar a um servidor. O único valor possível é ReadOnly. Se não especificares -K, a utilidade bcp não suporta conectividade a uma réplica secundária num grupo de disponibilidade Always On. Para obter mais informações, consulte Transferir carga de trabalho de leitura apenas para a réplica secundária de um grupo de disponibilidade Always On.

-l login_timeout

Especifica um tempo limite de login. A opção -l especifica o número de segundos antes que um logon no SQL Server atinja o tempo limite quando você tenta se conectar a um servidor. O tempo limite de login padrão é de 15 segundos. O tempo limite de login deve ser um número entre 0 e 65534. Se o valor que fornecer não for numérico ou não se enquadrar nesse intervalo, o bcp gera 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 da rede, login_ide senha não são necessárias. Se não especificar -T, precisa de especificar -U e -P para se ligar com sucesso.

Importante

Use -T apenas ao ligar ao SQL Server com uma ligação de confiança integrada no Windows. Ao ligar ao Azure SQL Database ou Azure Synapse Analytics, -T (autenticação integrada no Windows) não é suportada. Para a autenticação do Microsoft Entra nos serviços do Azure ou no SQL Server 2022 (16.x) e em versões posteriores, use -G (consulte Autenticar com ID do Microsoft Entra no bcp).

-Y[s|m|o]

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

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

-u

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

Certificado de servidor confiável. Quando usado com a opção de encriptação da ligação, permite a encriptação através de um certificado de servidor auto-assinado.

Representação dos dados

-c

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

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

Para melhores práticas, consulte as melhores práticas do modo Personagem e do modo nativo.

-C { ACP | OEM | RAW | code_page }

Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.

Especifica a página de código dos dados no arquivo de dados. code_page só é relevante se os dados contiverem colunas char, varcharou texto com valores de caracteres superiores a 127 ou inferiores a 32.

Especifique um nome de colação para cada coluna num ficheiro de formato, exceto quando quiser que a opção 65001 tenha prioridade sobre a ordenação ou a especificação da página de códigos.

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

As versões anteriores ao SQL Server 2016 (13.x) não oferecem suporte à página de código 65001 (codificação UTF-8). As versões que começam com 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. Esta opção não solicita cada campo. Utiliza os valores nativos.

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

Para melhores práticas, consulte as melhores práticas do modo Personagem e do modo nativo.

-N

Aplica-se a: apenas para Windows. Não suportado em 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 sem caracteres e caracteres Unicode para dados de caracteres. Essa opção oferece uma alternativa de desempenho mais alto para a opção -w e destina-se a transferir dados de uma instância do SQL Server para outra usando um arquivo de dados. Não é solicitado para cada campo. Use essa opção quando estiver transferindo dados que contenham caracteres estendidos ANSI e quiser aproveitar o desempenho do modo nativo.

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

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

Você pode ignorar o aviso. Uma maneira de resolver esse aviso é usar -n em vez de -N.

-w

Realiza a operação de cópia em massa usando caracteres Unicode. Esta opção não é solicitada para cada campo. Utiliza nchar como tipo de armazenamento, sem prefixos, \t (caractere de tabulação) como separador de campos, e \n (caractere de nova linha) como 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), Linux e macOS apenas. O Windows não é suportado.

Permite o suporte de tipos de dados vetoriais na utilidade BCP . Esta funcionalidade está atualmente desativada por defeito. Quando desativados, os dados vetoriais são importados ou exportados como cadeias de array flutuante JSON. Quando ativado, e ao ligar ao SQL Server 2025 (17.x) e versões posteriores, os dados vetoriais são importados ou exportados em binário vetorial nativo.

Ficheiros de formato

-f format_file

Especifica o caminho completo de um arquivo de formato. O significado desta opção depende do ambiente em que é usada, da seguinte forma:

  • Se usar -f com a format opção, a format_file especificada é criada para a tabela ou vista 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 utilizares -f com a opção in ou out, isso requer um ficheiro de formato já existente.

    Note

    Usar um ficheiro de formatação com a opção in ou out é opcional. Se não especificares a opção -f e não especificares -n, -c, -w, ou -N, o comando solicita informações sobre o formato e permite-te guardar as tuas respostas num ficheiro de formato. O nome padrão do ficheiro é 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 a: apenas para Windows. Não suportado em Linux e macOS.

Use esta opção com a opção format e a -fformat_file. Gera um ficheiro de formato baseado em XML em vez do ficheiro de formato não XML por defeito. A -x opção não funciona ao importar ou exportar dados. Ele gera um erro se usado sem format e -fformat_file.

Agrupamento e desempenho

-um packet_size

Especifica o número de bytes por pacote de rede que o cliente envia e recebe do servidor. Defina esta opção de configuração do servidor usando o SQL Server Management Studio ou o sp_configure procedimento armazenado do sistema. No entanto, pode sobrepor a opção de configuração do servidor individualmente usando esta opção. packet_size pode variar entre 4.096 bytes e 65.535 bytes. A predefinição é 4096.

Aumentar o tamanho do pacote pode melhorar o desempenho das operações de cópia em massa. Se solicitares um pacote maior mas o servidor não o conseguir conceder, o padrão é usado. As estatísticas de desempenho geradas pela utilitária BCP mostram o tamanho do pacote utilizado.

-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 defeito, o bcp importa todas as linhas do ficheiro de dados como um só lote. Para distribuir as linhas entre vários lotes, especifique um batch_size menor que o número de linhas no arquivo de dados. Se a transação de qualquer lote falhar, somente as inserções do lote atual serão revertidas. Lotes já importados por transações comprometidas não são afetados por falhas posteriores.

O -b e a -h "ROWS_PER_BATCH=<bb>" dica são mutuamente exclusivas. Use -b quando quiser que o BCP controle explicitamente o batching, ou use ROWS_PER_BATCH para dar pistas ao otimizador do servidor ao enviar os dados como uma única transação.

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

Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.

Especifica a dica ou dicas a usar durante uma importação em massa de dados para uma tabela ou vista.

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

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

  • ROWS_PER_BATCH = bb

    Número de linhas de dados por lote (como bb). Usado quando não especificas -b, resultando em todo o ficheiro de dados ser enviado para o servidor como uma única transação. O servidor otimiza o bulkload 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 da tabela de atualização em massa é adquirido durante a operação de carregamento em massa; caso contrário, um bloqueio em nível de linha será adquirido. Essa dica melhora significativamente o desempenho porque segurar um bloqueio durante a operação de cópia em massa reduz a contenção de bloqueio na mesa. Pode carregar uma tabela simultaneamente a partir de vários clientes se a tabela não tiver índices e TABLOCK estiver 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 indicação TABLOCK não é necessária para carregamento por múltiplos clientes simultâneos, porque cada thread é atribuída a um grupo de linhas separado dentro do índice e carrega dados nele. Para obter mais informações, consulte Columnstore indexes: overview.

  • 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 sugestão, quaisquer restrições de CHECK e FOREIGN KEY são ignoradas e, após a operação, a restrição na tabela é marcada como não confiada.

    Note

    Restrições UNIQUE, PRIMARY KEYe NOT NULL são sempre aplicadas.

    Em algum momento, você precisa 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 pode exceder o custo de aplicar restrições de CHECK aos dados incrementais. Por isso, normalmente pode ativar a verificação de restrições durante uma importação em massa incremental.

    Uma situação em que você pode querer restrições desabilitadas (o comportamento padrão) é se os dados de entrada contiverem linhas que violam restrições. Ao desativar CHECK restrições, pode importar os dados e depois 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ções.

  • FIRE_TRIGGERS

    Quando você especifica essa opção com o em argumento, todos os gatilhos de inserção definidos na tabela de destino são executados durante a operação de cópia em massa. Caso não especifique FIRE_TRIGGERS, não são executados gatilhos de inserção. FIRE_TRIGGERS é ignorado para os argumentos out, queryoute format.

-m max_erros

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 um erro de conversão de dados para o tipo de dados de destino. O total de max_errors exclui quaisquer erros que apenas o servidor consegue detetar, como violações de restrições.

Uma linha que a utilidade BCP não consegue copiar é ignorada e contada como um único erro. Se não incluir esta opção, o valor padrão é 10.

Note

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

-F primeira_linha

Especifica o número da primeira linha a ser exportada de uma tabela ou importada de um arquivo de dados. Este parâmetro requer um valor maior que (>) 0 mas menor que ()< ou igual ao número total de linhas. Se não especificares este parâmetro, o padrão é a primeira linha do ficheiro.

first_row pode ser um inteiro positivo com um valor de até 2^63-1. -F first_row utiliza 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. Este parâmetro requer um valor maior que (>) 0 mas menor que ()< ou igual ao número da última linha. Se não especificares este parâmetro, o padrão é a última linha do ficheiro.

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 . Por exemplo, se você especificar 0x410041, 0x41 será usado.

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

- field_term

Especifica o terminador de campo. O padrão é \t (caractere de tabulação). Use este 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.

Gestã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, consulte Manutenção de nulos ou valores padrão durante a importação em massa (SQL Server).

-E

Especifica que a operação utiliza valores de identidade no ficheiro de dados importado para a coluna de identidade. Se não especificar -E, o SQL Server ignora os valores de identidade desta coluna no ficheiro de dados que está a ser importado e atribui automaticamente valores únicos com base nos valores seed e increment especificados durante a criação da tabela. Para obter mais informações, consulte 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 especiais. Para obter mais informações, consulte "Comments" mais adiante neste artigo.

I/O de ficheiros e registo

-i input_file

Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.

Especifica o nome de um ficheiro de resposta. O ficheiro contém as respostas às perguntas do prompt de comandos para cada campo de dados quando 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 inclinada (/), não inclua um espaço entre -i e o valor input_file.

- output_file

Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.

Especifica o nome de um arquivo que recebe 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 quaisquer linhas que o utilitário bcp não pode 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 não usar esta opção, não é criado um ficheiro de erro.

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 versionamento

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

Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.

Executa a operação de cópia em massa usando tipos de dados de uma versão anterior do SQL Server. Esta opção não pede cada campo; usa os valores predefinidos.

  • 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 suporta, mas que foram introduzidos em versões posteriores, use a -V80 opção.

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

Opções diversas

-R

Especifica que a utilidade bcp copia em massa dados de moeda, data e hora para o SQL Server usando o formato regional definido para a configuração local do computador cliente. Por defeito, o BCP ignora as definições regionais.

-v

Informa o número da versão do utilitário bcp e o copyright.

Observações

  • A utilidade bcp suporta ficheiros de dados nativos compatíveis com todas as versões suportadas do SQL Server.

  • A utilidade bcp mostra apenas os primeiros 512 bytes de uma mensagem de erro.

Permissões

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

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

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

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

  • Existem gatilhos e a dica de FIRE_TRIGGERS não é especificada.

    Por padrão, os gatilhos não são acionados. Para ativar gatilhos explicitamente, use a opção -h com a sugestão FIRE_TRIGGERS.

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

Obter ajuda

Contribuir para a documentação do SQL

Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.

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