Copiar dados em massa com bcp para o SQL Server em Linux
Aplica-se a: SQL Server - Linux
Este artigo mostra como usar o utilitário bcp para copiar dados em massa entre uma instância do SQL Server no Linux e um arquivo de dados em um formato especificado pelo usuário.
Você pode usar o bcp para importar grande número de linhas em tabelas do SQL Server ou para exportar dados de tabelas do SQL Server para arquivos de dados. Exceto quando usado com a opção queryout, o bcp não exige conhecimento em Transact-SQL. O utilitário de linha de comando bcp funciona com o Microsoft SQL Server em execução local ou na nuvem, no Linux, Windows ou Docker e no Banco de Dados SQL do Azure e no Azure Synapse Analytics.
Este artigo mostra como:
- importar dados para uma tabela usando o comando
bcp in
- exportar dados de uma tabela usando o comando
bcp out
instalar as ferramentas de linha de comando SQL Server
O bcp faz parte das ferramentas de linha de comando do SQL Server, que não são instaladas automaticamente com o SQL Server em Linux. Se ainda não tiver instalado as ferramentas de linha de comando do SQL Server em seu computador Linux, você precisa instalá-las. Para obter mais informações sobre como instalar as ferramentas, selecione sua distribuição do Linux na lista a seguir:
Importar dados com o bcp
Neste tutorial, você cria um banco de dados de exemplo e uma tabela na instância do SQL Server local (localhost
) e, em seguida, usa o bcp para carregar na tabela de exemplo de um arquivo de texto em disco.
Criar uma tabela e um banco de dados de exemplo
Vamos começar criando um banco de dados de exemplo com uma tabela simples que é usada no restante deste tutorial.
Na caixa do Linux, abra um terminal de comando.
Copie e cole os comandos a seguir na janela do terminal. Esses comandos usam o utilitário de linha de comando sqlcmd para criar um banco de dados de exemplo (
BcpSampleDB
) e uma tabela (TestEmployees
) na instância do SQL Server local (localhost
). Lembre-se de substituir ousername
e o<your_password>
conforme necessário antes de executar os comandos.
Crie o banco de dados BcpSampleDB
:
sqlcmd -S localhost -U sa -P <your_password> -Q "CREATE DATABASE BcpSampleDB;"
Crie a tabela TestEmployees
no banco de dados BcpSampleDB
:
sqlcmd -S localhost -U sa -P <your_password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"
Criar o arquivo de dados de origem
Copie e cole os comandos a seguir na janela do terminal. Usamos o comando interno cat
para criar um arquivo de dados de texto de exemplo com três registros e salvar o arquivo no diretório base como ~/test_data.txt
. Os campos nos registros são delimitados por uma vírgula.
cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF
Executando o seguinte comando na janela do terminal, você pode verificar se o arquivo de dados foi criado corretamente:
cat ~/test_data.txt
Isso deve exibir o seguinte na janela do terminal:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
Importar dados do arquivo de dados de origem
Copie e cole os comandos a seguir na janela do terminal. Esse comando usa bcp para conectar-se à instância do SQL Server local (localhost
) e importar os dados do arquivo de dados (~/test_data.txt
) para a tabela (TestEmployees
) no banco de dados (BcpSampleDB
). Lembre-se de substituir o nome de usuário e <your_password>
conforme necessário antes de executar os comandos.
bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t ','
Aqui está uma breve visão geral dos parâmetros de linha de comando que usamos com o bcp neste exemplo:
-S
: especifica a instância do SQL Server à qual você deseja se conectar-U
: especifica a ID de logon usada para conectar-se ao SQL Server-P
: especifica a senha para a ID de logon-d
: especifica o banco de dados ao qual se conectar-c
: executa operações usando um tipo de dados de caractere-t
: especifica o terminador de campo. Estamos usandocomma
como terminador de campo para os registros em nosso arquivo de dados
Observação
Não estamos especificando um terminador de linha personalizado neste exemplo. As linhas no arquivo de dados de texto foram finalizadas corretamente com newline
quando usamos o comando cat
para criar o arquivo de dados anteriormente.
Executando o seguinte comando na janela do terminal, você pode verificar se os dados foram importados com êxito. Lembre-se de substituir o username
e o <your_password>
conforme necessário antes de executar o comando.
sqlcmd -S localhost -d BcpSampleDB -U sa -P <your_password> -I -Q "SELECT * FROM TestEmployees;"
Isso deve exibir os seguintes resultados:
Id Name Location
----------- ------------------- -------------------
1 Jared Australia
2 Nikita India
3 Tom Germany
Exportar dados com o bcp
Neste tutorial, você usará o bcp para exportar dados da tabela de exemplo que criamos anteriormente para um novo arquivo de dados.
Copie e cole os comandos a seguir na janela do terminal. Esses comandos usam o utilitário de linha de comando bcp para exportar dados da tabela TestEmployees
no banco de dados BcpSampleDB
para um novo arquivo de dados chamado ~/test_export.txt
. Lembre-se de substituir o nome de usuário e <your_password>
conforme necessário antes de executar o comando.
bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t ','
Executando o seguinte comando na janela do terminal, você pode verificar se os dados foram exportados corretamente:
cat ~/test_export.txt
Isso deve exibir o seguinte na janela do terminal:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany