Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
A utilidade de cópia em massa (bcp) copia em massa dados entre uma instância do SQL Server e um ficheiro de dados num formato especificado pelo utilizador.
Observações
Para obter informações sobre onde localizar ou como executar o utilitário
bcpe sobre as convenções de sintaxe dos utilitários da linha de comandos, consulte Utilitários de linha de comandos SQL (Motor de Base 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.
Os caracteres
<,>,|,&e^são caracteres especiais de shell de comando e devem ser precedidos pelo carácter de escape (^) ou incluídos entre aspas quando usados numa cadeia de texto (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. Para mais informações, consulte Utilização de caracteres especiais adicionais.bcpestá atualmente em pré-visualização no Warehouse do Microsoft Fabric.bcpNão é possível importar dados no endpoint SQL Analytics no Microsoft Fabric.
Suporte a arquivos de dados nativos
No SQL Server, a bcp utilitária suporta ficheiros de dados nativos compatíveis com versões do SQL Server a partir do SQL Server 2000 (8.x) e posteriores.
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 calculadas e de carimbo de data/hora são copiadas em massa do SQL Server para um arquivo de dados, como de costume.
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 outcria um arquivo de dados chamadoCurrency Types.dat:bcp AdventureWorks2025.Sales.Currency out "Currency Types.dat" -T -cPara 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
-qouColoque o proprietário, a tabela ou o nome da vista entre parênteses (
[]) dentro das aspas.
Validação de dados
bcp Agora impõe validação de dados e verificações de dados que podem causar falhas nos scripts se encontrarem dados inválidos num ficheiro 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 | Effect |
|---|---|
SQLCHAR ou SQLVARYCHAR |
Os dados são enviados na página de códigos do cliente ou na página de código implícita pela colaçã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. |
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 as opções-cou-wse planeia exportar os dados para uma base de dados diferente do SQL Server.(Administrador) Verifique os dados ao usar
bcp out. Por exemplo, quando usarbcp out,bcp ine 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-te-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
-te-r.
Examples
Os exemplos de código neste artigo utilizam tanto as bases de dados de exemplo AdventureWorks2025 como WideWorldImporters. Para obter mais informações, consulte:
Para obter a sintaxe para restaurar bases de dados de amostra, consulte RESTORE.
Exemplo de condições de ensaio
Salvo quando especificado o contrário, os exemplos assumem que usas autenticação Windows e tens uma ligação de confiança à instância do servidor onde estás a executar o bcp comando. Muitos dos exemplos usam um diretório chamado D:\bcp. Substitua <server_name> e os outros valores provisórios por valores para o seu ambiente.
Note
Exemplos que se ligam ao Base de Dados SQL do Azure utilizam autenticação Microsoft Entra (-G). Para mais informações, consulte Autenticar com o Microsoft Entra ID em bcp.
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;
A. 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 seguintes mostram a out opção na WideWorldImporters.Warehouse.StockItemTransactions tabela.
Basic
Este exemplo cria um ficheiro de dados chamado
StockItemTransactions_character.bcpe 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 -TExpanded
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 <server_name> -T
Reveja 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 seguinte mostra a out opção na WideWorldImporters.Warehouse.StockItemTransactions tabela. Este exemplo cria um ficheiro de dados chamado StockItemTransactions_character.bcp e copia os dados da tabela para ele usando o formato de caractere .
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 seguintes mostram a in opção na WideWorldImporters.Warehouse.StockItemTransactions_bcp tabela usando ficheiros criados anteriormente.
Basic
Este exemplo usa o arquivo de dados
StockItemTransactions_character.bcpcriado anteriormente.Em um prompt de comando, digite o seguinte comando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Este exemplo usa o arquivo de dados
StockItemTransactions_native.bcpcriado anteriormente. O exemplo também usa oTABLOCKhint e especifica o tamanho do lote, o número máximo de erros de sintaxe, um ficheiro de erro 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 <server_name> -TReveja
Error_in.logeOutput_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.
Note
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.
Note
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
Note
O -x switch é suportado apenas no Windows.
Para mais informações, consulte Utilizar ficheiros em formato não XML (SQL Server) e ficheiros em formato XML (SQL Server).
I. 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.
Note
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
Note
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 seguinte mostra a instrução 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 ficheiros de exemplo, gerados por bcp, usando terminadores personalizados de campo e de linha.
Crie uma tabela
dbo.T1no banco de dadostempdb, com duas colunas,IDeName.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'); GOGere um arquivo de saída a partir da tabela de exemplo
dbo.T1, usando um terminador de campo personalizado.Neste exemplo,
-t ,especifica o terminador de campo personalizado. Substitua<server_name>por um valor para o seu ambiente.bcp dbo.T1 out T1.txt -T -S <server_name> -d tempdb -w -t ,Aqui está o conjunto de resultados.
1,Natalia 2,Mark 3,RandolphGere 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,
-t ,especifica o terminador de campo personalizado e-r :especifica o terminador de linha personalizado. Substitua<server_name>por um valor para o seu ambiente.bcp dbo.T1 out T1.txt -T -S <server_name> -d tempdb -w -t , -r :Aqui está o conjunto de resultados.
1,Natalia:2,Mark:3,Randolph:Note
O terminador de linha é sempre adicionado, mesmo ao último registro. O terminador de campo, no entanto, não é adicionado ao último campo.
L. Copiar linhas de tabela para um ficheiro de dados (Base de Dados SQL do Azure)
O exemplo seguinte mostra a opção out na tabela SalesLT.Customer da base de dados de exemplo AdventureWorksLT no Base de Dados SQL do Azure. Este exemplo cria um ficheiro de dados chamado Customer.bcp e copia os dados da tabela para ele usando o formato de caractere . Substitua <server_name> por um valor para o seu ambiente.
Note
A -G switch ativa a autenticação do Microsoft Entra. Para mais informações, consulte Autenticar com o Microsoft Entra ID em bcp.
Em um prompt de comando, digite o seguinte comando:
bcp SalesLT.Customer out D:\bcp\Customer.bcp -c -S <server_name>.database.windows.net -d AdventureWorksLT -G
M. Copiar dados de um ficheiro para uma tabela (Base de Dados SQL do Azure)
O exemplo seguinte mostra a opção in na tabela SalesLT.Customer no Base de Dados SQL do Azure, utilizando o ficheiro de dados Customer.bcp que criou anteriormente. Substitua <server_name> por um valor para o seu ambiente.
Note
O -E switch preserva os valores de identidade do ficheiro de dados.
Em um prompt de comando, digite o seguinte comando:
bcp SalesLT.Customer in D:\bcp\Customer.bcp -c -S <server_name>.database.windows.net -d AdventureWorksLT -G -E
N. Copiar dados de uma consulta para um ficheiro de dados (Base de Dados SQL do Azure)
Para copiar o conjunto de resultados de uma instrução Transact-SQL para um ficheiro de dados da Base de Dados SQL do Azure, use a opção queryout. O exemplo seguinte copia os nomes dos clientes da SalesLT.Customer tabela na AdventureWorksLT base de dados para o Customer_A.txt ficheiro de dados. Substitua <server_name> por um valor para o seu ambiente.
Note
Use o -t interruptor para criar um ficheiro delimitado por vírgulas.
Em um prompt de comando, digite o seguinte comando:
bcp "SELECT CustomerID, FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE 'A%'" queryout D:\bcp\Customer_A.txt -t, -c -S <server_name>.database.windows.net -d AdventureWorksLT -G
Exemplos adicionais
Os artigos seguintes contêm exemplos de utilização 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 com bcp (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
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sys.sp_configure (Transact-SQL)
- sys.sp_tableoption (Transact-SQL)
- Formatar arquivos para importar ou exportar dados (SQL Server)
Obter ajuda
- Ideias para SQL: Tens sugestões para melhorar 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 a perguntas de desenvolvimento SQL
- Termos e informações de licença do Microsoft SQL Server
- Opções de suporte para utilizadores empresariais
- Ajuda SQL Server adicional e feedback
Contribuir para a documentação do SQL
Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.
Para obter mais informações, consulte Editar a documentação do Microsoft Learn.