Partilhar via


Copie dados em massa com bcp para o SQL Server no 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 bcp para importar um grande número de linhas para 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, bcp não requer conhecimento do 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-lhe 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 do SQL Server

bcp faz parte das ferramentas de linha de comando do SQL Server, que não são instaladas automaticamente com o SQL Server no Linux. Se você ainda não instalou as ferramentas de linha de comando do SQL Server em sua máquina Linux, deverá instalá-las. Para obter mais informações sobre como instalar as ferramentas, selecione sua distribuição Linux na lista a seguir:

Importar dados com bcp

Neste tutorial, você cria um banco de dados e uma tabela de exemplo na instância local do SQL Server (localhost) e, em seguida, usa bcp para carregar na tabela de exemplo a partir de um arquivo de texto no disco.

Criar um banco de dados e uma tabela de exemplo

Vamos começar criando um banco de dados de exemplo com uma tabela simples que é usada no restante deste tutorial.

  1. Na caixa Linux, abra um terminal de comandos.

  2. Copie e cole os seguintes comandos 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 local do SQL Server (localhost). Lembre-se de substituir o username e <password> conforme necessário antes de executar os comandos.

Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

Crie o banco de dados BcpSampleDB:

sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"

Crie a tabela TestEmployees no banco de dados BcpSampleDB:

sqlcmd -S localhost -U sa -P <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 o seguinte comando na janela do terminal. Usamos o comando cat interno para criar um arquivo de dados de texto de exemplo com três registros salvar o arquivo em seu diretório pessoal como ~/test_data.txt. Os campos dos registos são delimitados por vírgula.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

Você pode verificar se o arquivo de dados foi criado corretamente executando o seguinte comando na janela do terminal:

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 seguintes comandos na janela do terminal. Este comando usa bcp para se conectar à instância local do SQL Server (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 <password> conforme necessário antes de executar os comandos.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t  ','

Aqui está uma breve visão geral dos parâmetros de linha de comando que usamos com bcp neste exemplo:

  • -S: especifica a instância do SQL Server à qual se conectar
  • -U: especifica a ID de logon usada para se conectar ao SQL Server
  • -P: especifica a senha para o ID de login
  • -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 a utilizar comma como terminador de campo para os registos no nosso ficheiro de dados

Observação

Não estamos especificando um terminador de linha personalizado neste exemplo. As linhas no arquivo de dados de texto foram encerradas corretamente com newline quando usamos o comando cat para criar o arquivo de dados anteriormente.

Você pode verificar se os dados foram importados com êxito executando o seguinte comando na janela do terminal. Lembre-se de substituir o username e <password> conforme necessário antes de executar o comando.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <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 bcp

Neste tutorial, você usa bcp para exportar dados da tabela de exemplo que criamos anteriormente para um novo arquivo de dados.

Copie e cole os seguintes comandos 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 <password> conforme necessário antes de executar o comando.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

Você pode verificar se os dados foram exportados corretamente executando o seguinte comando na janela do terminal:

cat ~/test_export.txt

Isso deve exibir o seguinte na janela do terminal:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany