utilitário BCP
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsSistema de Plataforma Analítica (PDW)banco de dados SQL no Microsoft Fabric
O utilitário de programa de cópia em massa (bcp) copia dados em massa entre uma instância do Microsoft SQL Server e um arquivo de dados em um formato especificado pelo usuário.
Para usar bcp no Linux, consulte Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux. Para obter informações detalhadas sobre como usar bcp com o Azure Synapse Analytics, consulte Carregar dados com bcp.
O utilitário bcp pode ser usado 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 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.
Observação
Se você usar bcp para fazer backup de seus dados, crie um arquivo de formato para registrar o formato de dados. arquivos de dados bcp não incluem nenhuma informação de esquema ou formato, portanto, se uma tabela ou visualização for removida e você ficar sem um arquivo de formato, talvez não consiga importar os dados.
Para as convenções de sintaxe que são usadas para a sintaxe bcp, consulte as convenções de sintaxeTransact-SQL.
Para bcp no Linux e macOS, consulte Considerações para bcp no Linux e macOS.
Faça o download da versão mais recente do utilitário bcp
As ferramentas de linha de comando são General Availability (GA), no entanto, estão sendo lançadas com o pacote de instalação para SQL Server 2019 (15.x) e versões posteriores.
Baixar driver ODBC para SQL Server
Baixe o Microsoft Command Line Utilities 15 para SQL Server (x64)
Baixe o Microsoft Command Line Utilities 15 para SQL Server (x86)
Informações sobre a versão
- Número de lançamento: 15.0.4298.1
- Número de construção: 15.0.4298.1
- Data de lançamento: 7 de abril de 2023
bcp suporta a autenticação Microsoft Entra, incluindo suporte para autenticação multifator (MFA) para a Base de Dados SQL do Azure, a Base de Dados SQL no Microsoft Fabric e o Azure Synapse Analytics.
Observação
Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).
Requisitos do sistema
- Windows 8, Windows 8.1, Windows 10, Windows 11
- Windows Server 2016, Windows Server 2019, Windows Server 2022
Este componente requer o mais recente Microsoft ODBC Driver 17 para SQL Server.
Para verificar a versão bcp, execute o comando bcp -v
e confirme se 15.0.4298.1 ou posterior está em uso.
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)]
[-w]
[-x]
[-Y[s|m|o]]
Considerações e limitações
- O utilitário bcp tem uma limitação de que a mensagem de erro mostra apenas caracteres de 512 bytes. Somente os primeiros 512 bytes da mensagem de erro são exibidos.
Considerações para bcp no Linux e macOS
O terminador de campo é uma tabulação (
\t
).O terminador de linha é uma nova linha (
\n
).O modo de caracteres é o formato preferido para arquivos de formato bcp e arquivos de dados que não contêm caracteres estendidos.
Uma barra invertida (
\
) num argumento da linha de comandos deve ser colocada entre aspas ou ter um escape. Por exemplo, para especificar uma nova linha como um terminador de linha personalizado, você deve usar um dos seguintes mecanismos:-r\\n
-r"\n"
-r'\n'
Opções de linha de comando
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 |
---|---|---|
[database_name.]esquema. {table_name | view_name | "consulta"} | Sim | Sim |
[{indata_file | outdata_file | queryoutdata_file | format nul}]() | Sim | Sim |
-a tamanho_do_pacote | Sim | Sim |
-b batch_size | Sim | Sim |
-c | Sim | Sim |
-C { ACP | OEM | RAW | code_page } | Sim | Não |
-d database_name | Sim | Sim |
-D | Sim | Sim |
-e err_file | Sim | Sim |
-E | Sim | Sim |
-f format_file | Sim | Sim |
-F primeira_linha | Sim | Sim |
-G de autenticação do Microsoft Entra | Sim | Sim |
-h"dica [,...n]" | Sim | Não |
-i input_file | Sim | Não |
-k | Sim | Sim |
-K intenção de aplicação | Sim | Sim |
-l login_timeout | Sim | Sim |
-L última_linha | Sim | Sim |
-m max_errors | Sim | Sim |
-n | Sim | Sim |
-N | Sim | Não |
-o output_file | Sim | Não |
-P senha | Sim | Sim |
-q | Sim | Sim |
-r row_term | Sim | Sim |
-R | Sim | Sim |
-S [server_name[\instance_name]] | Sim | Sim |
-t field_term | Sim | Sim |
-T | Sim | Sim |
-U login_id | Sim | Sim |
-u | Não | Sim |
-v | Sim | Sim |
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) | Sim | Não |
-w | Sim | Sim |
-x | Sim | Não |
-Y[s|m|o] | Não | Sim |
database_name
O nome do banco de dados no qual a tabela ou exibição especificada reside. Se não for especificado, este é o banco de dados padrão para o usuário.
Você também pode especificar explicitamente o nome do banco de dados com -d
.
esquema
O nome do proprietário da tabela ou vista. de esquema é opcional se o usuário que executa a operação possuir a tabela ou exibição especificada. Se o esquema não for especificado e o utilizador que executa a operação não for proprietário da tabela ou vista especificada, o SQL Server retornará uma mensagem de erro e a operação será 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
). Somente modos de exibição em que todas as colunas se referem à mesma tabela podem ser usados como modos de exibição de destino. Para obter mais informações sobre as restrições para copiar dados em vistas, consulte INSERT.
"consulta"
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.
queryout
também deve ser especificado ao copiar dados em massa 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
em
Copia de um ficheiro para a tabela ou vista do banco de dados. Especifica a direção da cópia em massa.
Fora
Copia uma tabela ou vista do banco 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 os dados são importados 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 os dados são exportados 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 um máximo de 2^63 - 1 linhas.
queryout
Cópias de uma consulta devem ser especificadas apenas quando se copiam dados em grande quantidade de uma consulta.
Formato
Cria um arquivo de formato com base na opção especificada (-n
, -c
, -w
ou -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 opção format
requer a opção -f
; criar um arquivo de formato XML, também requer a opção -x
. Para obter mais informações, consulte Criar um arquivo de formato (SQL Server). Você deve especificar nul
como o valor (format nul
).
-tamanho_do_pacote
Especifica o número de bytes, por pacote de rede, enviados de e para o servidor. Uma opção de configuração de servidor pode ser definida usando o SQL Server Management Studio (ou o procedimento armazenado do sistema sp_configure
). No entanto, a opção de configuração do servidor pode ser substituída individualmente usando essa opção.
packet_size pode ser de 4.096 bytes a 65.535 bytes; O padrão é 4096
.
O aumento do tamanho do pacote pode melhorar o desempenho das operações de cópia em massa. Se um pacote maior for solicitado, mas não puder ser concedido, o padrão será usado. As estatísticas de desempenho geradas pelo utilitário bcp mostram o tamanho do pacote usado.
-b tamanho_do_lote
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, todas as linhas no arquivo de dados são importadas como um 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. Os lotes já importados por transações confirmadas não são afetados por uma falha posterior.
Não use esta opção com a opção -h "ROWS_PER_BATCH=<bb>"
.
-c
Executa a operação usando um tipo de dados de caractere. Esta opção não requer confirmação para cada campo; ele usa char como o tipo de armazenamento, sem prefixos e com \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, consulte Usar formato de caractere para importar ou exportar dados (SQL Server).
-C { ACP | OEM | RAW | code_page }
Aplica-se a: Windows apenas. 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.
Você deve especificar um nome de agrupamento para cada coluna em um arquivo de formato, exceto quando quiser que a opção 65001 tenha prioridade sobre a especificação de agrupamento/página de código.
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 é a página de código padrão usada se -C não for especificado. |
RAW |
Nenhuma conversão de uma página de código para outra ocorre. Esta é a opção mais rápida porque nenhuma conversão ocorre. |
<code_page> |
Número de página de código específico; por exemplo, 850. As versões anteriores à versão 13 (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. |
-d database_name
Especifica o banco de dados ao qual se conectar. Por padrão, bcp se conecta ao banco de dados padrão do usuário. Se -d <database_name>
e um nome de três partes (database_name.schema.table, passado como o primeiro parâmetro para bcp) forem especificados, ocorrerá um erro porque não é possível 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.
-D
Faz com que o valor passado para a opção bcp -S
seja interpretado como um nome de fonte de dados (DSN).
Um DSN pode ser usado para:
- incorporar opções de driver para simplificar as linhas de comando,
- impor opções de driver que não são acessíveis de outra forma a partir da linha de comando, como MultiSubnetFailover,
- ou para ajudar a proteger credenciais confidenciais de serem detetáveis como argumentos de linha de comando.
Para obter mais informações, consulte Suporte DSN em sqlcmd e bcp em Ligação com sqlcmd.
-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 essa opção não for usada, 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.
-E
Especifica que o valor ou valores de identidade no arquivo de dados importado devem ser usados para a coluna de identidade. Se -E
não for fornecido, os valores de identidade para esta coluna no arquivo de dados que está sendo importado serão ignorados e o SQL Server atribuirá automaticamente valores exclusivos 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.
-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
-f
for usado com a opçãoformat
, 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 (SQL Server).Se usado com a opção
in
ouout
,-f
requer um arquivo de formato existente.Observação
O uso de um arquivo de formato com a opção
in
ouout
é opcional. Na ausência da opção-f
, se-n
,-c
,-w
ou-N
não for especificado, o comando solicitará informações de formato e permitirá que você salve suas respostas em um arquivo de formato (cujo nome de 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.
-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 a (=
) o número total de linhas. Na ausência desse parâmetro, o padrão é a primeira linha do arquivo.
first_row pode ser um inteiro positivo com um valor de até 2^63-1.
-F
first_row é baseado em 1.
-G
Aplica-se a: Base de Dados SQL do Azure, base de dados SQL no Microsoft Fabric e Azure Synapse Analytics somente.
Este interruptor é usado pelo cliente para especificar que o utilizador está autenticado com o Microsoft Entra ID. A opção -G
requer versão 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 a Base de Dados SQL ou o Azure Synapse Analytics ou Autenticação para a base de dados SQL no Fabric.
Importante
No Linux e macOS, a autenticação interativa do Microsoft Entra não é suportada no momento. A autenticação integrada do Microsoft Entra requer Microsoft ODBC Driver 17 para SQL Server versão 17.6.1 e versões posteriores e um ambiente Kerberos configurado corretamente .
Para verificar se a sua versão do bcp inclui suporte para autenticação do Microsoft Entra, digite bcp --help
e verifique se você vê -G
na lista de argumentos disponíveis.
nome de utilizador e palavra-passe do Microsoft Entra
Quando você quiser usar um nome de usuário e senha do Microsoft Entra, você pode fornecer a opção
-G
e também usar o nome de usuário e senha, fornecendo as opções-U
e-P
.O exemplo a seguir exporta dados usando credenciais de nome de usuário e senha do Microsoft Entra. O exemplo exporta a tabela
bcptest
do banco de dadostestdb
do servidor do Azureaadserver.database.windows.net
e armazena os dados no arquivoc:\last\data1.dat
:bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
O exemplo a seguir importa dados usando as credenciais de um usuário do Microsoft Entra. O exemplo importa dados do ficheiro
c:\last\data1.dat
para a tabelabcptest
no banco de dadostestdb
no servidor Azureaadserver.database.windows.net
usando um nome de utilizador e palavra-passe do Microsoft Entra.bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Microsoft Entra integrado
Para autenticação integrada do Microsoft Entra, forneça a opção
-G
sem um nome de usuário ou senha. Essa configuração requer que a conta de usuário atual do Windows (a conta na qual o comando bcp está sendo executado) seja federada com o ID do Microsoft Entra:O exemplo a seguir exporta dados usando a autenticação integrada do Microsoft Entra. O exemplo exporta a tabela
bcptest
do banco de dadostestdb
no servidor lógicoaadserver.database.windows.net
e armazena os dados no arquivoc:\last\data2.dat
, usando credenciais do Windows federadas com o Microsoft Entra ID:bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
O exemplo a seguir importa dados usando a autenticação integrada do Microsoft Entra. O exemplo importa dados da tabela de arquivos
c:\last\data2.dat
para a tabelabcptest
no banco de dadostestdb
no servidor lógicoaadserver.database.windows.net
, usando credenciais do Windows federadas com o Microsoft Entra ID:bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Identidade de Serviço Gerido do Microsoft Entra
Importante
bcp está firmemente acoplado ao condutor. As versões principais do bcp e do driver com o qual um DSN é criado devem ser idênticas. Para determinar sua versão, execute
bcp -v
.A exportação de dados via bcp usando uma Identidade de Serviço Gerenciado no Windows requer a configuração de um DSN.
Para configurar um DSN em uma máquina que executa o Windows:
Pressione a tecla Windows no teclado
Digite
e selecione a versão apropriada do Administrador de Fonte de Dados ODBC Selecione a guia User DSN ou System DSN
Selecione Adicionar e siga as instruções
Quando solicitado a selecionar um tipo de autenticação, escolha a autenticação de Identidade de Serviço Gerido do Azure
Se você tiver uma Identidade Gerenciada Atribuída ao Usuário, cole a
da identidade na caixa ID de Login do na parte inferior da guia de autenticação Para configurar o DSN, continue seguindo os prompts.
Para obter um passo a passo completo, incluindo capturas de tela, consulte Criando e editando DSNs na interface do usuário.
Assim que o DSN estiver configurado, bcp pode ser chamado usando a flag
-D
para indicar que o valor passado para-S
é um DSN.bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
token de acesso do Microsoft Entra ID
Aplica-se a: Linux e macOS apenas. O Windows não é suportado.
Usuários de bcp 17.8 e versões posteriores, no Linux e macOS, também podem se autenticar com um token. Os exemplos a seguir usam PowerShell no Linux para recuperar um token de acesso.
Este exemplo recupera um token de acesso e o coloca em um arquivo para exportar dados usando uma identidade gerenciada atribuída pelo sistema.
Connect-AzAccount -Identity $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Este exemplo passa o
Client ID
para o parâmetro-AccountId
deConnect-AzAccount
para recuperar um token de acesso e colocá-lo num ficheiro de token. O token é usado para exportar dados usando a Identidade Gerenciada Atribuída pelo Usuário especificada.Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity' $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
interativo do Microsoft Entra
Aplica-se a: Windows apenas. Linux e macOS não são suportados.
A autenticação interativa do Microsoft Entra, disponível para todo o SQL do Azure e o SQL Server 2022 (16.x) e versões posteriores, permite que você use uma caixa de diálogo interativa para autenticar, que também oferece suporte à autenticação multifator.
A autenticação interativa do Microsoft Entra requer bcpversão 15.0.1000.34 ou posterior e ODBC versão 17.2 ou posterior.
Para habilitar a autenticação interativa, forneça a opção
-G
apenas com nome de usuário (-U
) e sem senha.O exemplo a seguir exporta dados usando a autenticação interativa do Microsoft Entra, que inclui a especificação do nome de usuário de uma conta do Microsoft Entra.
O modo interativo requer que uma senha seja inserida manualmente ou, para contas com autenticação multifator habilitada, conclua o método de autenticação MFA configurado.
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
Se estiver usando um usuário do Microsoft Entra que seja uma conta do Windows de um domínio federado, o nome de usuário inserido na linha de comando deve conter seu domínio (por exemplo,
joe@contoso.com
):bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
Se os usuários convidados existirem em um locatário específico do Microsoft Entra e fizerem parte de um grupo existente no Banco de Dados SQL do Azure que tenha permissões de banco de dados para executar o comando bcp
, seu alias de usuário convidado será usado (por exemplo, ).
-h "dicas [, ... n]"
Aplica-se a: apenas para Windows. Não suportado em Linux e macOS.
Especifica a dica ou dicas a serem usadas durante uma importação em massa de dados para uma tabela ou exibição.
ORDEM (coluna [ASC | DESC] [, ...n])
A ordem de classificação dos dados no arquivo de dados. O desempenho da importação em massa será melhorado 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 clusterizada, ou se não houver nenhum índice clusterizado na tabela, a cláusula
ORDER
será ignorada. Os nomes de coluna fornecidos devem ser nomes de coluna 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
-b
não é especificado, resultando em todo o arquivo de dados sendo 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. Uma tabela pode ser carregada simultaneamente de vários clientes se a tabela não tiver índices e
TABLOCK
for especificado. Por padrão, o comportamento de bloqueio é determinado pela opção de tabelatable lock on bulkload
. Para obter mais informações, consulte sp_tableoption.Observação
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 dica
CHECK_CONSTRAINTS
, todas as restriçõesCHECK
eFOREIGN KEY
são ignoradas e, após a operação, a restrição na tabela é marcada como não confiável.Observação
Restrições
UNIQUE
,PRIMARY KEY
eNOT 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. Portanto, recomendamos que normalmente você habilite a verificação de restrição durante uma importação incremental em massa.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. Com
CHECK
restrições desabilitadas, você pode importar os dados e, em seguida, usar instruções Transact-SQL para remover dados que não são válidos.bcp agora impõe a validação de dados e verificações de dados que podem fazer com que os scripts falhem se forem executados em dados inválidos em um arquivo de dados.
Observação
A opção
-m
max_errors não se aplica à verificação de restrições.DISPARADORES_DE_FOGO
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. Se
FIRE_TRIGGERS
não for especificado, nenhum gatilho de inserção será executado.FIRE_TRIGGERS
é ignorado para os argumentosout
,queryout
eformat
.
-i input_file
Aplica-se a: somente no Windows. Não suportado em Linux e macOS.
Especifica o nome de um arquivo de resposta, contendo as respostas às perguntas do prompt de comando para cada campo de dados quando uma cópia em massa está sendo executada 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.
-k
Especifica que as colunas vazias devem manter um valor nulo durante a operação, em vez de ter quaisquer valores padrão para as colunas inseridas. Para obter mais informações, consulte Manutenção de nulos ou valores padrão durante a importação em massa (SQL Server).
-K intenção_aplicação
Declara o tipo de carga de trabalho do aplicativo ao se conectar a um servidor. O único valor possível é ReadOnly
. Se -K
não for especificado, o utilitário bcp não suportará conectividade com uma réplica secundária em um grupo de disponibilidade Always On. Para obter mais informações, consulte Transferir 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 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 fornecido não for numérico ou não se enquadrar nesse intervalo, bcp gerará uma mensagem de erro. Um valor de 0 especifica um tempo limite infinito.
-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 a (=
) o número da última linha. Na ausência desse parâmetro, o padrão é a última linha do arquivo.
last_row pode ser um inteiro positivo com um valor de até 2^63-1.
-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 um erro de conversão de dados para o tipo de dados de destino. O total de max_errors exclui quaisquer erros que possam ser detetados apenas no servidor, como violações de restrição.
Uma linha que não pode ser copiada pelo utilitário bcp é ignorada e é contada como um erro. Se essa opção não estiver incluída, o padrão será 10.
Observação
A opção
-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 requer definição para cada campo; ela usa os valores nativos.
Para obter mais informações, consulte Usar formato nativo para importar ou exportar dados (SQL Server).
-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)).
O aviso pode ser ignorado. Uma maneira de resolver esse aviso é usar -n
em vez de -N
.
-o output_file
Aplica-se a: Windows apenas. 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.
-P senha
Especifica a senha para o ID de login. Se essa opção não for usada, o comando bcp solicitará uma senha. Se esta opção for usada no final do prompt de comando sem uma senha, bcp usa a senha 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 opção -U
e outros interruptores (não especifique -P
), pressione a tecla Enter, e o comando solicitará uma senha. 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.
-q
Executa a instrução ""
).
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.
-r linha_termo
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 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.
-R
Especifica que os dados de moeda, data e hora são copiados em massa para o SQL Server usando o formato regional definido para a configuração de localidade do computador cliente. Por padrão, as configurações regionais são ignoradas.
-S [nome_do_servidor[\nome_da_instância]]
Especifica o nome da instância do SQL Server à qual se conectar ou, se -D
for usado, um DSN.
Se nenhum servidor for especificado, o utilitário bcp se conectará à instância padrão do SQL Server no computador local. Esta opção é necessária quando um comando bcp é executado a partir de um computador remoto na rede ou de 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.
-t 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.
-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 -T
não for especificado, você precisará especificar -U
e -P
para se conectar com êxito.
Importante
Quando o utilitário -U
e -P
.
-U login_id
Especifica a ID de logon usada para se conectar ao SQL Server.
-u
Aplica-se a: Linux e macOS apenas, para bcp versão 18 e versões posteriores. Não suportado no Windows.
Certificado de servidor confiável.
-v
Informa o número da versão do utilitário bcp e o copyright.
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 }
Aplica-se a: apenas 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)
Por exemplo, para gerar dados para tipos não suportados pelo SQL Server 2000 (8.x), mas que foram introduzidos em versões posteriores do SQL Server, use a opção -V80
.
Para obter mais informações, consulte Importar dados nativos e de formato de caractere de versões anteriores do SQL Server.
-w
Executa a operação de cópia em massa usando caracteres Unicode. Esta opção não solicita para cada campo; ela usa nchar como o tipo de armazenamento, sem prefixos, \t
(caractere de tabulação) 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 formato de caractere unicode para importar ou exportar dados (SQL Server).
-x
Aplica-se a: Windows apenas. Não suportado em Linux e macOS.
Essa opção é usada com as opções format
e -f
format_file e gera um arquivo de formato baseado em XML em vez do arquivo de formato não XML padrão. O -x
não funciona ao importar ou exportar dados. Ele gera um erro se usado sem format
e -f
format_file.
-Y[s|m|o]
Aplica-se a: Linux e macOS apenas, para bcp versão 18 e versões posteriores. Não suportado no Windows.
Especifica o modo de criptografia de conexão. As opções são Estrita, Obrigatória e Opcional. Usar -Y
sem parâmetros usa o modo de criptografia obrigatória e é equivalente a -Ym
.
Comentários
O cliente bcp 13.0 é instalado quando você instala as ferramentas do Microsoft SQL Server 2019 (15.x). Se as ferramentas forem instaladas para várias versões do SQL Server, dependendo da ordem dos valores da variável de ambiente
, você pode estar usando o cliente bcp anterior em vez do cliente bcp 13.0. Esta variável de ambiente define o conjunto de diretórios usados pelo Windows para procurar arquivos executáveis. Para descobrir qual versão você está usando, execute o comandobcp -v
no prompt de comando do Windows. Para obter informações sobre como definir o caminho do comando na variável de ambientePATH
, consulte variáveis de ambiente ou procure variáveis de ambiente na Ajuda do Windows.Para certificar-se de que a versão mais recente do utilitário
bcp está em execução, você precisa remover todas as versões mais antigas do utilitáriobcp. Para determinar onde todas as versões do utilitário bcp estão instaladas, digite no prompt de comando:
where bcp.exe
O utilitário bcp também pode ser baixado separadamente do Microsoft SQL Server 2016 Feature Pack. Selecione
ENU\x64\MsSqlCmdLnUtils.msi
ouENU\x86\MsSqlCmdLnUtils.msi
.Os arquivos de formato XML só são suportados quando as ferramentas do SQL Server são instaladas junto com o SQL Server Native Client.
Para obter informações sobre onde encontrar ou como executar o utilitário bcp e sobre as convenções de sintaxe dos utilitários de prompt de comando, consulte SQL Command Prompt Utilities (Mecanismo de Banco de Dados).
Para obter informações sobre como preparar dados para operações de importação ou exportação em massa, consulte Preparar dados para exportação ou importação em massa.
Para obter informações sobre quando as operações de inserção de linha executadas por importação em massa são registadas no registo de transações, consulte Pré-requisitos para registo mínimo nade importação em massa.
Usando caracteres especiais adicionais
Os caracteres
<
,>
,|
,&
e^
são caracteres de shell de comando especiais e devem ser precedidos pelo caractere de escape (^
) ou entre aspas quando usados em String (por exemplo,"StringContaining&Symbol"
). Se você usar aspas para incluir uma cadeia de caracteres que contenha um dos caracteres especiais, as aspas serão definidas como parte do valor da variável de ambiente.
Suporte a arquivos de dados nativos
No SQL Server, o utilitário bcp oferece suporte a arquivos de dados nativos compatíveis com versões do SQL Server a partir do SQL Server 2000 (8.x) e posterior.
Colunas computadas e colunas de timestamp
Os valores nos ficheiros de dados a serem importados para colunas calculadas ou carimbo de data/hora , são ignorados, e o SQL Server atribui valores automaticamente. Se o arquivo de dados não contiver valores para as colunas de carimbo de data/hora computadas ou na tabela, utilize um arquivo de formato para especificar que as colunas de carimbo de data/hora computadas ou na tabela devem ser ignoradas ao importar dados; o SQL Server atribui automaticamente valores para a coluna.
As colunas de carimbo de data/hora calculadas e
Especificar identificadores que contenham espaços ou aspas
Os identificadores do SQL Server podem incluir caracteres como espaços incorporados e aspas. Esses identificadores devem ser tratados do seguinte modo:
Quando você especificar um identificador ou nome de arquivo que inclua um espaço ou aspas no prompt de comando, coloque o identificador entre aspas ("").
Por exemplo, o seguinte comando
bcp out
cria um arquivo de dados chamadoCurrency Types.dat
:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
Para especificar um nome de banco de dados que contenha um espaço ou aspas, você deve usar a opção
-q
.Para nomes de proprietário, tabela ou exibição que contenham espaços incorporados ou aspas, você pode:
Especifique a opção
-q
ouColoque o proprietário, a tabela ou o nome da vista entre parênteses (
[]
) dentro das aspas.
Validação de dados
bcp agora impõe a validação de dados e verificações de dados que podem fazer com que os scripts falhem se forem executados em dados inválidos em um arquivo de dados. Por exemplo, bcp agora verifica que:
As representações nativas de tipos de dados flutuantes ou reais são válidas.
Os dados Unicode têm um comprimento de bytes que é par.
Formas de dados inválidos que poderiam ser importadas em massa em versões anteriores do SQL Server podem falhar ao carregar agora; enquanto que, em versões anteriores, a falha não ocorria até que um cliente tentasse acessar os dados inválidos. A validação adicionada minimiza surpresas ao consultar os dados após o carregamento em massa.
Exportação ou importação em massa de documentos SQLXML
Para exportar ou importar dados SQLXML em massa, use um dos seguintes tipos de dados em seu arquivo de formato.
Tipo de dados | Efeito |
---|---|
SQLCHAR ou SQLVARYCHAR |
Os dados são enviados na página de código do cliente ou na página de código implícita pelo agrupamento). O efeito é o mesmo que especificar a opção -c sem especificar um arquivo de formato. |
SQLNCHAR ou SQLNVARCHAR |
Os dados são enviados como Unicode. O efeito é o mesmo que especificar a opção -w sem especificar um arquivo de formato. |
SQLBINARY ou SQLVARYBIN |
Os dados são enviados sem qualquer conversão. |
Permissões
Uma operação bcp out
requer permissão SELECT
na tabela de origem.
Uma operação bcp in
requer minimamente permissões de SELECT
/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 dicaCHECK_CONSTRAINTS
.Existem gatilhos e a dica de
FIRE_TRIGGER
não é especificada.Por padrão, os gatilhos não são acionados. Para disparar gatilhos explicitamente, use a opção
-h
com a dicaFIRE_TRIGGERS
.Use a opção
-E
para importar valores de identidade de um arquivo de dados.
Observação
A exigência de permissão ALTER TABLE
na tabela de destino foi introduzida no SQL Server 2005 (9.x). Esse requisito pode fazer com que scripts de bcp que não impõem gatilhos e verificações de restrição falhem se a conta de usuário não tiver permissões de ALTER TABLE
para a tabela de destino.
Práticas recomendadas do modo de caractere (-c
) e do modo nativo (-n
)
Esta seção tem recomendações para o modo de caractere (-c
) e modo nativo (-n
).
(Administrador/Utilizador) Sempre que possível, use o formato nativo (
-n
) para evitar o problema do separador. Use o formato nativo para exportar e importar usando o SQL Server. Exporte dados do SQL Server usando a opção-c
ou-w
se os dados forem importados para um banco de dados que não seja do SQL Server.(Administrador) Verifique os dados ao usar
bcp out
. Por exemplo, quando usarbcp out
,bcp in
e depoisbcp out
, verifique se os dados foram exportados corretamente e se os valores do terminador não são usados como parte de algum valor de dados. Considere substituir os terminadores padrão (usando as opções-t
e-r
) por valores hexadecimais aleatórios para evitar conflitos entre valores de terminador e valores de dados.(Utilizador) Use um terminador longo e exclusivo (qualquer sequência de bytes ou caracteres) para minimizar a possibilidade de um conflito com o valor real da cadeia de caracteres. Isso pode ser feito usando as opções
-t
e-r
.
Exemplos
Os exemplos nesta seção usam o banco de dados de exemplo WideWorldImporters
para SQL Server 2016 (13.x) e versões posteriores, o Banco de Dados SQL do Azure e a Instância Gerenciada SQL do Azure.
WideWorldImporters
pode ser baixado do https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Consulte as instruções RESTORE para obter a sintaxe para restaurar o banco de dados de exemplo.
Exemplo de condições de ensaio
Exceto quando especificado de outra forma, os exemplos pressupõem que você usa a Autenticação do Windows e tem uma conexão confiável com a instância do servidor na qual está executando o comando bcp. Um diretório chamado D:\bcp
é usado em muitos dos exemplos.
O seguinte script Transact-SQL cria uma cópia vazia da tabela WideWorldImporters.Warehouse.StockItemTransactions
e, em seguida, adiciona uma restrição de chave primária:
USE WideWorldImporters;
GO
SET NOCOUNT ON;
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
SELECT *
INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
FROM WideWorldImporters.Warehouse.StockItemTransactions
WHERE 1 = 2;
ALTER TABLE Warehouse.StockItemTransactions_bcp
ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp
PRIMARY KEY NONCLUSTERED (StockItemTransactionID ASC);
END
Você pode truncar a tabela StockItemTransactions_bcp
conforme necessário:
TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;
Um. Identificar a versão do utilitário bcp
Em um prompt de comando, digite o seguinte comando:
bcp -v
B. Copiar linhas da tabela para um arquivo de dados (com uma conexão confiável)
Os exemplos a seguir ilustram a opção out
na tabela WideWorldImporters.Warehouse.StockItemTransactions
.
Básico
Este exemplo cria um ficheiro de dados chamado
StockItemTransactions_character.bcp
e copia os dados da tabela para ele usando o formato de caractere .Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
expandido
Este exemplo cria um arquivo de dados chamado
e copia os dados da tabela para ele usando o formato nativo . O exemplo também: especifica o número máximo de erros de sintaxe, um arquivo de erro e um arquivo de saída. Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\bcp\StockItemTransactions_native.bcp -m 1 -n -e D:\bcp\Error_out.log -o D:\bcp\Output_out.log -S -T
Revisão Error_out.log
e Output_out.log
.
Error_out.log
deve estar em branco. Compare os tamanhos de arquivo entre StockItemTransactions_character.bcp
e StockItemTransactions_native.bcp
.
C. Copiar linhas da tabela para um arquivo de dados (com autenticação de modo misto)
O exemplo a seguir ilustra a opção out
na tabela WideWorldImporters.Warehouse.StockItemTransactions
. Este exemplo cria um ficheiro de dados chamado
O exemplo pressupõe que você use a autenticação de modo misto e deve usar a opção -U
para especificar sua ID de login. Além disso, a menos que você esteja se conectando à instância padrão do SQL Server no computador local, use a opção -S
para especificar o nome do sistema e, opcionalmente, um nome de instância.
Em um prompt de comando, digite o seguinte comando: (O sistema solicita sua senha.)
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. Copiar dados de um ficheiro para uma tabela
Os exemplos a seguir ilustram a opção in
na tabela WideWorldImporters.Warehouse.StockItemTransactions_bcp
usando arquivos criados anteriormente.
Básico
Este exemplo usa o arquivo de dados
StockItemTransactions_character.bcp
criado anteriormente.Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
expandido
Este exemplo usa o arquivo de dados
StockItemTransactions_native.bcp
criado anteriormente. O exemplo também usa a dicaTABLOCK
, especifica o tamanho do lote, o número máximo de erros de sintaxe, um ficheiro de erros e um ficheiro de saída.Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\bcp\Error_in.log -o D:\bcp\Output_in.log -S -T
Revisão
Error_in.log
eOutput_in.log
.
E. Copiar uma coluna específica para um arquivo de dados
Para copiar uma coluna específica, você pode usar a opção queryout
. O exemplo a seguir copia apenas a coluna StockItemTransactionID
da tabela Warehouse.StockItemTransactions
em um arquivo de dados.
Em um prompt de comando, digite o seguinte comando:
bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T
F. Copiar uma linha específica para um arquivo de dados
Para copiar uma linha específica, você pode usar a opção queryout
. O exemplo a seguir copia apenas a linha da pessoa chamada Amy Trefl
da tabela WideWorldImporters.Application.People
para um arquivo de dados Amy_Trefl_c.bcp
.
Observação
A opção -d
é usada para identificar o banco de dados.
Em um prompt de comando, digite o seguinte comando:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
G. Copiar dados de uma consulta para um arquivo de dados
Para copiar o conjunto de resultados de uma instrução Transact-SQL para um arquivo de dados, use a opção queryout
. O exemplo a seguir copia os nomes da tabela WideWorldImporters.Application.People
, ordenados por nome completo, para o arquivo de dados People.txt
.
Observação
A opção -t
é usada para criar um arquivo delimitado por vírgula.
Em um prompt de comando, digite o seguinte comando:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. Criar arquivos de formato
O exemplo a seguir cria três arquivos de formato diferentes para a tabela Warehouse.StockItemTransactions
no banco de dados WideWorldImporters
. Revise o conteúdo de cada arquivo criado.
Em um prompt de comando, digite os seguintes comandos:
REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T
REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T
REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T
Observação
Para usar a opção -x
, você deve estar usando um cliente bcp 9.0. Para obter informações sobre como usar o cliente bcp 9.0, consulte a seção Observações.
Para obter mais informações, consulte Usar arquivos de formato não XML (SQL Server) e Arquivos de formato XML (SQL Server).
Eu. Usar um arquivo de formato para importação em massa com bcp
Para usar um ficheiro de formato criado anteriormente ao importar dados para uma instância do SQL Server, use o interruptor -f
juntamente com a opção in
. Por exemplo, o comando a seguir copia em massa o conteúdo de um arquivo de dados, StockItemTransactions_character.bcp
, em uma cópia da tabela Warehouse.StockItemTransactions_bcp
usando o arquivo de formato criado anteriormente, StockItemTransactions_c.xml
.
Observação
A opção -L
é usada para importar apenas os primeiros 100 registros.
Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Observação
Os arquivos de formato são úteis quando os campos do arquivo de dados são diferentes das colunas da tabela; por exemplo, em seu número, ordem ou tipos de dados. Para obter mais informações, consulte Formatar arquivos para importar ou exportar dados (SQL Server).
J. Especificar uma página de código
O exemplo de código parcial a seguir mostra bcp import ao especificar uma página de código 65001:
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. Exemplo de arquivo de saída usando um campo personalizado e terminadores de linha
Este exemplo mostra dois arquivos de exemplo, gerados por bcp usando terminadores de linha e campo personalizados.
Crie uma tabela
dbo.T1
no banco de dadostempdb
, com duas colunas,ID
eName
.USE tempdb; GO CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20)); GO INSERT INTO dbo.T1 VALUES (1, N'Natalia'); INSERT INTO dbo.T1 VALUES (2, N'Mark'); INSERT INTO dbo.T1 VALUES (3, N'Randolph'); GO
Gere um arquivo de saída a partir da tabela de exemplo
dbo.T1
, usando um terminador de campo personalizado.Neste exemplo, o nome do servidor é
MYSERVER
e-t ,
especifica o terminador de campo personalizado.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
Aqui está o conjunto de resultados.
1,Natalia 2,Mark 3,Randolph
Gere um arquivo de saída a partir da tabela de exemplo
dbo.T1
, usando um terminador de campo personalizado e um terminador de linha personalizado.Neste exemplo, o nome do servidor é
MYSERVER
,-t ,
especifica o terminador de campo personalizado e-r :
especifica o terminador de linha personalizado.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
Aqui está o conjunto de resultados.
1,Natalia:2,Mark:3,Randolph:
Observação
O terminador de linha é sempre adicionado, mesmo ao último registro. O terminador de campo, no entanto, não é adicionado ao último campo.
Exemplos adicionais
Os seguintes artigos contêm exemplos de utilização de bcp:
Formatos de dados para importação ou exportação em massa (SQL Server)
Manter valores nulos ou padrão durante a importação em massa (SQL Server)
Manter valores de identidade ao importar dados em massa (SQL Server)
Formatar arquivos para importar ou exportar dados (SQL Server)
- Criar um arquivo de formato (SQL Server)
- Usar um arquivo de formato para importar dados em massa (SQL Server)
- Usar um arquivo de formato para ignorar uma coluna de tabela (SQL Server)
- Usar um arquivo de formato para ignorar um campo de dados (SQL Server)
- Usar um arquivo de formato para mapear colunas de tabela para campos de arquivo de dados (SQL Server)
Exemplos de importação e exportação em massa de documentos XML (SQL Server)
Conteúdo relacionado
- Preparar dados para exportação ou importação em massa
- INSERÇÃO EM MASSA (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Formatar arquivos para importar ou exportar dados (SQL Server)
Obter ajuda
- Ideias para SQL: Tem sugestões para melhorar o SQL Server?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server): Faça perguntas sobre o SQL Server
- Stack Overflow (tag sql-server): Respostas para perguntas de desenvolvimento SQL
- Reddit: Discussão geral sobre o SQL Server
- Termos de Licença e Informações do Microsoft SQL Server
- Opções de suporte para utilizadores empresariais
- Ajuda e comentários adicionais do SQL Server
Contribuir para a documentação 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 Como contribuir para a documentação do SQL Server