utilitário bcp
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
O utilitário bulk copy program (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 o bcp com o Azure Synapse Analytics, confira Carregar dados com o bcp.
O utilitário bcp pode ser usado para importar 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 aquela 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 dos dados. Os arquivos de dados bcp não incluem quaisquer informações de esquema ou de formato. Portanto, se uma tabela ou exibição for descartada e você não tiver um arquivo de formato, não será possível importar os dados.
Para as convenções de sintaxe usadas para a sintaxe bcp, confira Convenções da sintaxe Transact-SQL.
Baixe a versão mais recente do utilitário bcp
As ferramentas de linha de comando estão em Disponibilidade Geral (GA), no entanto, elas estão sendo lançadas com o pacote do instalador para SQL Server 2019 (15.x) e versões posteriores.
Windows
- Baixar o driver ODBC para SQL Server
- Baixar Utilitários de Linha de Comando 15 da Microsoft para SQL Server (x64)
- Baixar Utilitários de Linha de Comando 15 da Microsoft para SQL Server (x86)
Linux e macOS
Confira Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux para obter instruções para instalar o sqlcmd e o bcp no Linux e no macOS.
Informações da versão
- Número da versão: 15.0.4298.1
- Número de build: 15.0.4298.1
- Data de lançamento: 7 de abril de 2023
O bcp é compatível com a autenticação do Microsoft Entra, incluindo a compatibilidade com a Autenticação Multifator (MFA) para o Banco de Dados SQL do Azure e o Azure Synapse Analytics.
Observação
O Microsoft Entra ID era conhecido anteriormente como Azure Active Directory (Azure AD).
Requisitos do sistema
Windows 8, Windows 8.1, Windows 10, Windows 11
Windows Server 2016, Windows Server 2019, Windows Server 2022
Esse componente exige a versão mais recente do Microsoft ODBC Driver 17 para SQL Server.
Para verificar a versão do bcp, execute o comando bcp -v
e confirme se a versão 15.0.4298.1 ou posterior está em uso.
Observação
sqlcmd e bcp também estão disponíveis no Linux. Para obter mais informações, confira Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux.
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 Azure Active Directory 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]
[-v]
[-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ]
[-w]
[-x]
Opções de linha de comando
database_name
Nome do banco de dados no qual a tabela ou exibição especificada reside. Se não estiver especificado, esse será o banco de dados padrão do usuário.
Você também pode especificar explicitamente o nome de banco de dados com -d
.
esquema
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 schema não estiver especificado e o usuário que está executando a operação não for proprietário da 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
). Somente as exibições nas quais todas as colunas fazem referência à mesma tabela podem ser usadas como exibições de destino. 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. queryout
também deve ser especificado quando você 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 de um arquivo em uma tabela ou exibição de banco de dados. Especifica a direção da cópia em massa.
out
Copia da tabela ou exibição de banco de dados em um arquivo. Especifica a direção da cópia em massa.
Se você especificar um arquivo existente, o arquivo será substituído. Ao extrair dados, o utilitário bcp representa uma cadeia de caracteres vazia como nula e uma cadeia de caracteres nula como vazia.
data_file
O caminho completo do arquivo de dados. Quando dados são importados em massa para o SQL Server, o arquivo de dados contém os dados a serem copiados na tabela ou exibição especificada. Quando 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 no máximo 2^63 - 1 linhas.
queryout
Copia de uma consulta e deve ser especificado somente quando você copiar dados em massa 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 opção format
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, confira Criar um arquivo de formato (SQL Server). Você deve especificar nul
como o valor (format nul
).
-a packet_size
Especifica o número de bytes por pacote de rede enviado de e para o servidor. Uma opção de configuração do servidor pode ser definida usando SQL Server Management Studio (ou o procedimento armazenado do sistema sp_configure
). Contudo, a opção de configuração do servidor pode ser substituída individualmente usando-se esta opção. packet_size pode estar entre 4.096 e 65.535 bytes, sendo 4096
o padrão.
Um tamanho de pacote maior pode aumentar o desempenho de 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 de 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, 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 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 serã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. Essa opção não solicita informações para cada campo; ela usa char como o tipo de armazenamento, sem prefixos e com \t
(caractere de tabulação) como separador de campos e \r\n
(caractere de nova linha) como 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).
-C { ACP | OEM | RAW | code_page }
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.
Observação
Recomendamos a especificação de 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 especificação de ordenação/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. Essa é a página de código padrão usada se -C não for especificado. |
RAW | Não ocorre nenhuma conversão de uma página de código para outra. Essa é a opção mais rápida porque não acontece nenhuma conversão. |
code_page | Um 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 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. |
-d database_name
Especifica o banco de dados que deve ser conectado. 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, informado como primeiro parâmetro para bcp) estiverem especificados, 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.
-d
Faz com que o valor passado para a opção do bcp -S
seja interpretada como um DNS (nome da fonte de dados). Um DSN pode ser usado para inserir opções de driver para simplificar as linhas de comando, impor opções de driver que não seriam acessíveis de outra forma usando uma linha de comando, como MultiSubnetFailover, ou para ajudar a proteger credenciais confidenciais contra a detecção como argumentos de linha de comando. Para obter mais informações, confira Suporte para DSN no sqlcmd e no bcp em Conectar-se com sqlcmd.
-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 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 deve ser usado para a coluna de identidade. Se -E
não for fornecido, os valores de identidade para essa coluna no arquivo de dados que está sendo importado serão ignorados e o SQL Server atribuirá automaticamente valores exclusivos com base nos valores semente e de 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 valores exclusivos para a coluna automaticamente.
A opção -E
tem um requisito de permissões especial. Para obter mais informações, consulte "Comentários", mais adiante neste artigo.
-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
-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, confira Criar um arquivo de formato (SQL Server).Se usado com a opção
in
ouout
,-f
requer um arquivo de formato existente.Observação
É opcional usar um arquivo de formato in com a opção
in
ouout
. 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 será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 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 do que (>
) 0, mas menor do que (<
) ou igual ao (=
) 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 tem base 1.
\- G
Aplica-se a: Banco de Dados SQL do Azure e Azure Synapse Analytics somente.
Essa opção é usada pelo cliente ao se conectar ao Banco de Dados SQL do Azure ou o Azure Synapse Analytics para especificar que o usuário seja autenticado usando a autenticação do Microsoft Entra ID. A opção -G exige a versão 14.0.3008.27 ou versões posteriores. Para determinar a versão, execute bcp -v
. Para obter mais informações, confira Usar a autenticação do Microsoft Entra com o Banco de Dados SQL ou o Azure Synapse Analytics.
Importante
A Autenticação interativa do Microsoft Entra não tem suporte no Linux nem no macOS. A autenticação integrada do Microsoft Entra requer o Microsoft ODBC Driver 17 for SQL Server versão 17.6.1 e posteriores e um ambiente Kerberos configurado corretamente.
Dica
Para verificar se a sua versão do bcp inclui suporte para a autenticação Microsoft Entra, digite bcp --help
e verifique se você vê -G
na lista de argumentos disponíveis.
Nome de usuário e senha do Microsoft Entra
Quando quiser usar um nome de usuário e senha do Microsoft Entra, você poderá fornecer a opção
-G
e também usar o nome de usuário e a 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 em um 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 arquivo
c:\last\data1.dat
na tabelabcptest
para o banco de dadostestdb
no servidor do Azureaadserver.database.windows.net
usando o nome de usuário e a senha 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 a autenticação integrada do Microsoft Entra, forneça a opção
-G
sem um nome de usuário ou uma senha. Essa configuração exige que a conta de usuário do Windows atual (a conta em que o comando bcp está sendo executado) seja federada com o Microsoft Entra ID: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 Gerenciada do Microsoft Entra
Importante
O bcp está firmemente acoplado ao driver. As versões principais do bcp e do driver com o qual um DSN é criado devem ser as mesmas. Para determinar a versão, execute
bcp -v
.A exportação de dados via bcp usando uma Identidade de Serviço Gerenciada no Windows requer que um DSN seja configurado.
Para configurar um DSN em um computador que executa o Windows:
- Pressione a tecla Windows no teclado
- Digite
ODBC
e selecione a versão apropriada do Administrador de Fonte de Dados ODBC - Selecione a guia DSN de usuário ou DSN de sistema
- Selecione Adicionar e siga as solicitações
- Quando for solicitado um tipo de autenticação, selecione Autenticação de Identidade de Serviço Gerenciada do Azure
- Se você tiver uma Identidade Gerenciada Atribuída pelo Usuário, cole o
Object (principal) ID
da identidade na caixa ID de Logon na parte inferior da guia de autenticação - Continue seguindo as solicitações para configurar seu DSN
Para obter um passo a passo completo, incluindo capturas de tela, consulte Criação e edição de DSNs na interface do usuário.
Depois que o DSN estiver configurado, o bcp poderá ser chamado usando o sinalizador
-D
para indicar que o valor transmitido para-S
é um DSN.bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
Token de acesso do Microsoft Entra ID
Os usuários do bcp (17.8 e versões posteriores) também podem se autenticar com um token. Os exemplos a seguir usam o PowerShell no Linux para recuperar um token de acesso.
Esse 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 transmite um
Client ID
para o parâmetro-AccountId
deConnect-AzAccount
para recuperar um token de acesso e colocá-lo em um arquivo 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
Microsoft Entra interativo
A autenticação interativa do Microsoft Entra, disponível para todos os SQL do Azure e SQL Server 2022+, 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 bcp versão 15.0.1000.34 ou posterior, bem como ODBC versão 17.2 ou posterior.
Para habilitar a autenticação interativa, forneça a opção
-G
apenas com o nome de usuário (-U
), sem uma 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 a 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
Caso utilize um usuário do Microsoft Entra que seja uma conta do Windows a partir de um domínio federado, o nome de usuário inserido na linha de comando deve conter o 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 do Microsoft Entra específico e fizerem parte de um grupo que exista no Banco de Dados SQL que tenha permissões para executar o comando bcp, o alias de usuário convidado será usado (por exemplo,
keith0@adventure-works.com
).
-h "hints [, ... n]"
Especifica a dica ou dicas a serem usadas durante uma importação de dados em massa para uma tabela ou exibição.
ORDER (column [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 importados forem armazenados de acordo com o índice clusterizado na tabela, se houver. Se o arquivo de dados for classificado em outra ordem, ou seja, diferente da ordem de uma chave de índice clusterizado, ou se não houver nenhum índice clusterizado na tabela, a cláusula ORDER será ignorada. Os nomes das colunas fornecidos devem ser nomes de colunas válidas 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
-b
não é especificado, resulta no envio de todo o arquivo de dados ao servidor como uma transação única. 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. Uma tabela poderá ser carregada simultaneamente de vários clientes se não tiver qualquer índice e TABLOCK for especificado. Por padrão, o comportamento de bloqueio é determinado pela opção de tabela bloqueio de tabela em carregamento em massa.
Observação
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, pois cada thread simultâneo recebe um rowgroup separado dentro do índice e carrega dados nele. Confira os artigos conceituais sobre o índice columnstore para obter detalhes,
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ções CHECK e FOREIGN KEY são ignoradas e, depois da operação, a restrição na tabela é marcada como não confiável.
Observação
As restrições UNIQUE, PRIMARY KEY e NOT NULL são 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 revalidação da restrição poderá exceder o custo da aplicação de restrições CHECK aos dados incrementais. Portanto, recomendamos que normalmente você habilite 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. Com as restrições CHECK desabilitadas, é possível importar os dados e usar instruções Transact-SQL para remover os dados inválidos.
Observação
Agora, o bcp impõe uma validação de dados e verificações de dados que poderão provocar falhas em scripts 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ção.FIRE_TRIGGERS
Quando especificados com o argumento in, todos os gatilhos de inserção definidos na tabela de destino serã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 argumentos
out
,queryout
eformat
.
-i input_file
Especifica o nome de um arquivo de resposta que contém as respostas às perguntas do prompt de comando para cada campo de dados quando uma cópia em massa está sendo executada com o uso do 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.
-k
Especifica que colunas vazias devem reter um valor nulo durante a operação, em vez de qualquer valor padrão nas colunas inseridas. Para obter mais informações, confira Manter valores nulos ou padrão durante a importação em massa (SQL Server).
-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 -K
não for especificado, o utilitário bcp não dará suporte à conectividade a uma réplica secundária em um grupo de disponibilidade Always On. Para obter mais informações, confira Descarregar a carga de trabalho somente leitura na 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 estiver nesse intervalo, bcp gerará uma mensagem de erro. Um valor de 0 especifica um tempo limite infinito.
-L last_row
Especifica o número da última linha a ser exportada de uma tabela ou importada de um arquivo de dados. Esse parâmetro exige um valor maior do que (>
) 0, mas menor do que (<
) ou igual ao (=
) 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 em um erro de conversão de dados para o tipo de dados de destino. O total de max_errors exclui todos os erros que podem ser detectados apenas no servidor, como violações de restrição.
Uma linha que não possa 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 -m
também não se aplica à conversão de tipos de dados money nem bigint.
-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 informações para cada campo; ela usa os valores nativos.
Para obter mais informações, confira Usar um formato nativo para importar ou exportar dados (SQL Server).
-n
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)).
O aviso pode ser ignorado. Um modo de resolver este aviso é usar -n
em vez de -N
.
-o output_file
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.
-P password
Especifica a senha para a ID de logon. Se essa opção não for usada, o comando bcp solicitará uma senha. Se essa opção for usada ao término do prompt de comando sem uma 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 o bcp junto com a opção -U
e outras opções (não especificar -P
), pressione ENTER e o comando pedirá 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.
-Q
Executa a instrução SET QUOTED_IDENTIFIER ON 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, confira Comentários, mais adiante neste tópico.
-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, confira 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 -r
e o valor row_term.
-R
Especifica que dados de moeda, data e horário são copiados em massa no SQL Server usando o formato regional definido para as configurações de localidade do computador cliente. Por padrão, as configurações regionais são ignoradas.
-S server_name [\instance_name]
Especifica a instância do SQL Server à qual você deseja se conectar. Se nenhum servidor for especificado, o utilitário bcp se conectará à instância padrão do SQL Server no computador local. Essa opção é requerida quando um comando bcp é executado 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 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 esse parâmetro para substituir o terminador de campo padrão. Para obter mais informações, confira 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 de rede, login_ide password não são necessárias. Se -T
não for especificado, especifique -U
e -P
para estabelecer conexão com êxito.
Importante
Quando o utilitário bcp estiver se conectando ao SQL Server com uma conexão confiável usando segurança integrada, use a opção -T
(conexão confiável) em vez da combinação nome de usuário e senha . Quando o utilitário bcp está se conectando ao Banco de Dados SQL ou ao Azure Synapse Analytics, não há suporte para o uso da autenticação do Windows ou do Microsoft Entra. Use as opções -U
e -P
.
-U login_id
Especifica a ID de logon usada para conectar-se ao SQL Server.
-v
Relata o número de versão e os direitos autorais do utilitário bcp .
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)
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)
Por exemplo, para gerar dados para tipos sem suporte no SQL Server 2000 (8.x), mas que foram incorporados nas versões posteriores do SQL Server, 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.
-w
Executa a operação de cópia em massa usando caracteres Unicode. Essa opção não solicita o preenchimento de cada campo; ela usa 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, confira Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server).
-X
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.
Comentários
O cliente bcp 13.0 será instalado durante a instalação de ferramentas do Microsoft SQL Server 2019 (15.x). Caso as ferramentas sejam instaladas em várias versões do SQL Server, dependendo da ordem de valores da variável de ambiente PATH, talvez você esteja usando um cliente bcp anterior em vez do cliente bcp 13.0. Essa variável de ambiente define o conjunto de diretórios usado pelo Windows para pesquisar por arquivos executáveis. Para descobrir qual versão você está usando, execute o comando
bcp -v
no prompt de comando do Windows. Para obter informações sobre como definir o caminho de comando na variável de ambiente PATH, confira Variáveis de Ambiente ou pesquise Variáveis de Ambiente na Ajuda do Windows.Para verificar se a versão mais recente do utilitário bcp está em execução, você precisa remover as versões mais antigas do utilitário bcp.
Para determinar o local em que 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 Feature Pack do Microsoft SQL Server 2016. Selecione
ENU\x64\MsSqlCmdLnUtils.msi
ouENU\x86\MsSqlCmdLnUtils.msi
.Os arquivos de formato XML só têm suporte 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, confira Utilitários de prompt de comando SQL (Mecanismo de Banco de Dados).
Para obter informações sobre como preparar dados para importar ou exportar operações em massa, confira Preparar dados para exportação ou importação em massa.
Para obter informações sobre quando as operações de inserção de linhas executadas por importações em massa são registradas no log de transações, confira Pré-requisitos para registro em log mínimo na importação em massa.
Usar caracteres especiais adicionais
Os caracteres
<
,>
,|
,&
e^
são especiais do Shell de comando e devem ser precedidos pelo caractere de escape (^
) ou colocados entre aspas quando usados na cadeia de caracteres (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 de arquivos de dados nativos
No SQL Server, o utilitário bcp dá suporte a arquivos de dados nativos compatíveis com versões do SQL Server começando com o SQL Server 2000 (8.x) em diante.
Colunas computadas e colunas de carimbo de data/hora
Os valores no arquivo de dados sendo para colunas computadas ou timestamp são ignorados, e o SQL Server atribui valores automaticamente. Se o arquivo de dados não contiver valores para as colunas computadas ou timestamp na tabela, use um arquivo de formato para especificar que as colunas computadas ou timestamp na tabela devem ser ignoradas ao importar dados; o SQL Server automaticamente atribuirá valores para a coluna.
Colunas computadas e timestamp são copiadas em massa do SQL Server em um arquivo de dados, como sempre.
Especifique identificadores que contêm espaços ou aspas
SQL Server podem incluir caracteres como espaços inseridos e aspas. Tais 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 comando
bcp out
a seguir cria um arquivo de dados nomeadoCurrency 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 inseridos ou aspas, você também pode:
Especificar a opção
-q
ouInserir o nome de proprietário, tabela ou exibição entre colchetes (
[]
) dentro das aspas.
Validação de dados
Agora, o bcp impõe uma validação de dados e verificações de dados que poderão provocar falhas em scripts se forem executados em dados inválidos em um arquivo de dados. Por exemplo, o bcp agora verifica se:
As representações nativas dos tipos de dados float ou real são válidas.
Dados Unicode têm um comprimento regular de byte.
Formas de dados inválidos que podiam ser importadas em massa em versões anteriores do SQL Server podem falhar ao serem carregadas agora; enquanto em versões anteriores a falha só ocorria quando um cliente tentava acessar os dados inválidos. A validação adicional minimiza as surpresas ao consultar os dados depois do carregamento em massa.
Exportar ou importar documentos SQLXML em massa
Para exportar ou importar dados SQLXML em massa, use um dos tipos de dados a seguir 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 implicada pela ordenação. 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 no mínimo permissões SELECT/INSERT na tabela de destino. Além disso, a permissão ALTER TABLE será necessária se qualquer das seguintes afirmações for verdadeira:
Existem restrições e a dica CHECK_CONSTRAINTS não foi especificada.
Observação
Desabilitar restrições é o comportamento padrão. Para habilitar restrições explicitamente, use a opção
-h
com a dica CHECK_CONSTRAINTS.Existem gatilhos e a dica FIRE_TRIGGER não foi especificada.
Observação
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.
Observação
A exigência da permissão ALTER TABLE na tabela de destino era nova no SQL Server 2005 (9.x). Essa nova exigência pode provocar falha em scripts bcp que não impõem verificações de gatilhos e de restrições se a conta do usuário não tiver permissões ALTER TABLE para a tabela de destino.
Práticas recomendadas de modo de caractere (-c
) e modo nativo (-n
)
Esta seção apresenta recomendações para modo de caractere (-c
) e modo nativo (-n
).
(Administrador/Usuário) Quando possível, use o formato nativo (
-n
) para evitar o problema de separador. Use o formato nativo para exportar e importar com o uso do SQL Server. Exporte dados do SQL Server com o uso da opção-c
ou-w
se os dados serão importados para um banco de dados do SQL Server.(Administrador) Verifique dados ao usar BCP OUT. Por exemplo, quando você usa BCP OUT, BCP IN e, em seguida, BCP OUT, verifique se os dados são exportados corretamente e se os valores de terminador não são usados como parte de algum valor de dados. Considere substituir os terminadores padrão (com as opções
-t
e-r
) por valores hexadecimais aleatórios para evitar conflitos entre valores de terminadores e valores de dados.(Usuário) Use um terminador longo e exclusivo (qualquer sequência de bytes ou de caracteres) para minimizar a possibilidade de um conflito com o valor da cadeia de caracteres real. Isso pode ser feito com as opções
-t
e-r
.
Exemplos
Os exemplos nesta seção usam o banco de dados de amostra WideWorldImporters
para SQL Server 2016 (13.x) e versões posteriores, SQL do Azure Banco de Dados e Instância Gerenciada de SQL do Azure. WideWorldImporters
pode ser baixado de https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Consulte Instruções RESTORE para obter a sintaxe de restauração do banco de dados de amostra.
Condições de teste de exemplo
Exceto quando especificado de outra forma, os exemplos presumem que você esteja usando a Autenticação do Windows e tenha 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 script a seguir cria uma cópia vazia da tabela WideWorldImporters.Warehouse.StockItemTransactions
e, em seguida, adiciona uma restrição de chave primária. Executar a seguinte consulta de T-SQL no SSMS (SQL Server Management Studio)
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;
R. Identificar a versão do utilitário bcp
No prompt de comando, digite o seguinte comando:
bcp -v
B. Copie linhas de tabela em um arquivo de dados (com uma conexão confiável)
Os exemplos a seguir ilustram a opção out
na tabela WideWorldImporters.Warehouse.StockItemTransactions
.
Basic
Este exemplo cria um arquivo de dados nomeado
StockItemTransactions_character.bcp
e copia os dados da tabela nesse arquivo usando o formato de caractere .No prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
Expanded
Este exemplo cria um arquivo de dados nomeado
StockItemTransactions_native.bcp
e copia os dados da tabela nesse arquivo usando 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.No 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
Revise Error_out.log
e Output_out.log
. Error_out.log
deve ficar em branco. Compare os tamanhos de arquivo entre StockItemTransactions_character.bcp
e StockItemTransactions_native.bcp
.
C. Copie linhas de tabela em um arquivo de dados (com autenticação mista)
O exemplo a seguir ilustra a opção out
na tabela WideWorldImporters.Warehouse.StockItemTransactions
. Este exemplo cria um arquivo de dados nomeado StockItemTransactions_character.bcp
e copia os dados da tabela nesse arquivo usando o formato de caractere .
O exemplo pressupõe que você esteja usando autenticação mista; você deve usar a opção -U
para especificar sua ID de logon. 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, se quiser, um nome de instância.
No prompt de comando, digite o seguinte comando: (O sistema solicitará sua senha.)
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. Copie dados de um arquivo para uma tabela
Os exemplos a seguir ilustram a opção in
na tabela WideWorldImporters.Warehouse.StockItemTransactions_bcp
usando os arquivos criados anteriormente.
Basic
Este exemplo usa o arquivo de dados
StockItemTransactions_character.bcp
criado anteriormente.No prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T
Expanded
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 arquivo de erro e um arquivo de saída.No 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
Revise
Error_in.log
eOutput_in.log
.
E. Copie uma coluna específica em 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.
No 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. Copie uma linha específica em 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 para o contato nomeado Amy Trefl
da tabela WideWorldImporters.Application.People
em um arquivo de dados Amy_Trefl_c.bcp
.
Observação
A opção -d
é usada para identificar o banco de dados.
No 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. Copie dados de uma consulta em um arquivo de dados
Para copiar o conjunto de resultados de uma instrução Transact-SQL em um arquivo de dados, use a opção queryout
. O exemplo a seguir copia os nomes da tabela WideWorldImporters.Application.People
, classificados pelo nome completo, no arquivo de dados People.txt
.
Observação
A opção -t
é usada para criar um arquivo delimitado por vírgula.
No 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. Crie arquivos de formato
O exemplo a seguir cria três arquivos de formato diferentes para a tabela Warehouse.StockItemTransactions
no banco de dados do WideWorldImporters
. Revise o conteúdo de cada arquivo criado.
No 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
, é necessário estar usando um cliente bcp 9.0. Para obter mais informações sobre como usar o cliente bcp 9.0, consulte "Comentários."
Para obter mais informações, confira Arquivos de formato não XML (SQL Server) e Arquivos de formato XML (SQL Server).
I. Use um arquivo de formato para importação em massa com bcp
Para usar um arquivo de formato criado anteriormente ao importar dados para uma instância do SQL Server, use a opção -f
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 100 primeiros registros.
No 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, classificação ou tipos de dados. Para obter mais informações, confira Arquivos de formato para importar ou exportar dados (SQL Server).
J. Especifique uma página de código.
O exemplo de código parcial a seguir mostra a importação de bcp 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 de 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 da tabela
dbo.T1
de exemplo , usando um terminador de campo personalizado.Neste exemplo, o nome do servidor é
MYSERVER
e o terminador de campo personalizado é especificado por-t ,
.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
Este é o conjunto de resultados.
1,Natalia 2,Mark 3,Randolph
Gere um arquivo de saída da tabela
dbo.T1
de exemplo , usando um terminador de campo personalizado e um terminador de linha personalizado.Nesse exemplo, o nome do servidor é
MYSERVER
, o terminador de campo personalizado é especificado por-t
e o terminador de linha personalizado é especificado por-r :
.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
Este é o conjunto de resultados.
1,Natalia:2,Mark:3,Randolph:
Observação
O terminador de linha sempre é adicionado, mesmo que ao último registro. No entanto, o terminador de campo não é adicionado ao último campo.
Mais exemplos
Os artigos a seguir contêm exemplos de como usar o bcp:
Formatos de dados para importar ou exportar 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)
Arquivos de formato para importação ou exportação de dados (SQL Server)
- Criar um formato de arquivo (SQL Server)
- Usar um arquivo de formato para importação em massa de dados (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)
Considerações e limitações
- O utilitário bcp tem uma limitação em que a mensagem de erro mostra somente caracteres de 512 bytes. Somente os primeiros 512 bytes da mensagem de erro são exibidos.
Conteúdo relacionado
- Preparar dados para exportação ou importação em massa
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Arquivos de formato para importação ou exportação de dados (SQL Server)
Obter ajuda
- Ideias para SQL: Tem sugestões para melhorar o SQL Server?
- Microsoft Q&A (SQL Server)
- DBA Stack Exchange (marcação sql-server): Fazer perguntas sobre o SQL Server
- Stack Overflow (marcação sql-server): respostas a perguntas sobre desenvolvimento de SQL
- Reddit: discussão geral sobre o SQL Server
- Informações e termos de licença do Microsoft SQL Server
- Opções de suporte para usuários empresariais
- Entre em contato com a Microsoft
- Ajuda e comentários adicionais sobre o SQL Server
Contribua com a documentação do SQL
Você sabia que pode editar 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, confira Como contribuir para a documentação do SQL Server