Ao trabalhar como administrador ou desenvolvedor de banco de dados do SQL Server, você não pode viver em seu mundo isolado do SQL Server sem se comunicar com outras fontes de dados. Por exemplo, raramente há um dia em que você não seja solicitado a importar dados de um arquivo Excel, Access ou CSV para sua tabela do SQL Server. Ou, inversamente, exporte uma de suas tabelas de banco de dados SQL Server para um arquivo externo para que essa tabela seja usada em outro mecanismo de banco de dados ou seja analisada externamente pela equipe correspondente.
O SQL Server nos fornece vários métodos que podem ser usados para exportar uma tabela de banco de dados SQL Server existente para um Excel ou arquivo de texto e importar dados de uma fonte de dados externa para uma tabela de banco de dados SQL Server nova ou existente. Neste artigo, abordaremos gradualmente todos esses métodos.
Utilitário BCP
O utilitário Bulk Copy Program, também conhecido como BCP, é um utilitário de linha de comando que pode ser usado para importar um grande número de linhas de um arquivo de dados do sistema operacional para sua tabela de banco de dados SQL Server ou exportar uma tabela de banco de dados SQL Server existente para um arquivo de dados do sistema.
A sintaxe da ferramenta BCP contém uma grande variedade de opções. Estes são os mais usados:
- O nome da tabela ou exibição do banco de dados SQL Server – isso funcionará como fonte de dados no caso de processo de exportação de dados e como destino no caso de processo de importação de dados.
- A direção dos dados, onde IN indica importação de dados e OUT indica exportação de dados.
- O nome do arquivo de dados local que atuará como fonte no caso de processo de importação de dados e como destino no caso de processo de exportação de dados.
- -S servidor\instância – é usado para especificar o nome da instância do SQL Server.
- –d – é usado para especificar o banco de dados que contém a tabela de origem ou destino.
- -T – isso é usado para especificar que a Autenticação do Windows será usada para conectar-se ao SQL Server.
- -U nome de usuário e -P senha – especificam o nome de usuário e a senha usados para se conectar à instância do SQL Server.
- O utilitário Bulk Copy Program, também conhecido como BCP, é um utilitário de linha de comando que pode ser usado para importar um grande número de linhas de um arquivo de dados do sistema operacional para sua tabela de banco de dados SQL Server ou exportar uma tabela de banco de dados SQL Server existente para um arquivo de dados do sistema operacional. – são usados para especificar o formato do arquivo de dados de origem ou destino e os delimitadores usados nesse arquivo de dados.
Por exemplo, o comando BCP abaixo é usado para exportar o conteúdo da tabela de banco de dados Employee_Main em massa em um arquivo CSV, da seguinte forma:
bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
Esses dados serão rapidamente copiados para um arquivo CSV, conforme mostrado no resultado abaixo:
Para importar o conteúdo de um arquivo CSV para uma tabela de banco de dados, o seguinte comando BCP pode ser usado para fazer isso rapidamente em massa:
bcp AdventureWorks.dbo.Employee_Main em C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
E os dados serão inseridos na tabela do banco de dados, conforme mostrado no resultado abaixo:
Ao gastar alguns minutos preparando esses comandos com as opções adequadas, você pode usar facilmente o utilitário BCP para importar dados ou exportá-los para arquivos de dados de texto.
INSERÇÃO EM MASSA
O BULK INSERT T-SQL A instrução funciona de forma semelhante ao BCP IN comando e é usado para importar dados de um arquivo de dados que é acessível pelo serviço SQL Server para uma tabela de banco de dados SQL Server – tudo feito diretamente no SQL Server. Ao contrário do comando BCP IN, a instrução BULK INSERT pode ser agrupada com outras operações em uma única transação do SQL Server que está sendo executada sob seu controle.
A instrução T-SQL BULK INSERT abaixo pode ser usada para importar dados de um arquivo CSV para uma tabela de banco de dados existente, especificando os delimitadores de coluna e linha, conforme mostrado abaixo:
BULK INSERT AdventureWorks.dbo.Employee_Main FROM 'C:\Test\Employees.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); GO
OPENROWSET
A função OPENROWSET é usada para se conectar a fontes de dados usando um provedor de conexão OLEDB e, em seguida, usar a consulta T-SQL especificada para recuperar dados dessa fonte de dados. As principais vantagens da função OPENROWSET sobre os métodos BCP e BULK INSERT são as seguintes:
- você pode filtrar os dados recuperados pela instrução OPENROWSET usando uma cláusula WHERE
- você pode usá-lo em uma instrução SELECT para ler os dados da fonte de dados – não apenas com a instrução INSERT
Para usar a instrução OPENROWSET, você precisará habilitar as consultas distribuídas ad hoc opção de configuração do sistema primeiro usando o script abaixo:
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
Após habilitar a opção de configuração do sistema de consultas distribuídas ad hoc, você pode usar a função OPENROWSET para importar dados para tabelas de banco de dados SQL Server a partir de arquivos CSV com formato de dados previamente definido, conforme mostrado na consulta T-SQL abaixo:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] FROM OPENROWSET( BULK 'C:\Test\Employees.csv', FORMATFILE = 'C:\Test\Fmt.xml' ) AS rows;
Servidor vinculado
O SQL Server Linked Server é um objeto de servidor configurado para permitir que o Mecanismo de Banco de Dados do SQL Server se conecte a diferentes tipos de fontes de dados OLE DB fora da instância do SQL Server. O Linked Server pode ser facilmente criado usando o SQL Server Management Studio ou os Comandos T-SQL, conforme mostrado abaixo:
Uma vez criado, o servidor vinculado pode ser facilmente usado para acessar a fonte de dados remota e importar os dados correspondentes para a tabela de banco de dados do SQL Server, conforme mostrado na consulta T-SQL abaixo:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$
Assistente de exportação/importação do SQL Server
O assistente de Exportação e Importação do SQL Server nos fornece uma interface simples para criar pacotes do SQL Server Integration Service que podem ser usados imediatamente ou salvos para uso posterior. Esses pacotes permitem importar dados e exportá-los para uma ampla variedade de fontes de dados, começando com arquivos simples e terminando com mecanismos de banco de dados mais complexos.
O assistente de Exportação e Importação pode ser usado, por exemplo, para importar dados de uma fonte de dados do Excel para uma tabela de banco de dados existente. As etapas a seguir descrevem esse processo:
- No Pesquisador de Objetos do SQL Server Management Studio, clique com o botão direito do mouse no banco de dados AdventureWorks que contém a tabela na qual você gravará os dados. Em seguida, escolha a opção Importar dados opção em Tarefas submenu:
- O Assistente de importação e exportação do SQL Server será aberto. Na seção Escolha uma fonte de dados janela, especifique o tipo da fonte de dados. Neste exemplo específico, escolheremos o Microsoft Excel e o caminho completo para o arquivo Excel desejado. Depois de especificá-lo, clique no botão Próximo botão:
- Na seção Escolha um destino janela, você será solicitado a especificar o tipo de destino no qual os dados de origem serão gravados. Em nosso exemplo, é o banco de dados SQL Server. Você também será solicitado a especificar o nome do servidor, as credenciais e o nome do banco de dados no qual a tabela de destino está localizada. Depois de fornecer todas essas informações, clique em Avançar para prosseguir:
- Na seção Especificar cópia ou consulta da tabela janela, você terá a opção de copiar todos os dados da fonte para uma tabela nova ou existente ou escrever uma consulta personalizada para recuperar um intervalo específico de dados. Quando isso for decidido, clique no botão Próximo botão:
- Na seção Selecionar tabelas e visualizações de origem janela, especifique a planilha ou tabela de origem da fonte de dados e a tabela de destino na qual os dados de origem serão gravados. Você poderá visualizar a origem, verificar o mapeamento das colunas entre as tabelas de origem e destino e especificar se os dados devem ser anexados a uma tabela existente ou a uma tabela recém-gerada. Clique em Próximo botão para prosseguir:
- No Salvar e executar pacote Janela, você tem a opção de salvar o pacote SSIS criado no Assistente de Importação e Exportação para executá-lo imediatamente ou salvá-lo para agendamento ou execução posterior. Clique em Próximo botão para prosseguir:
- No Concluir o assistente janela, você verá um resumo das opções selecionadas e configurações fornecidas. Clique no botão Concluir botão para começar a copiar os dados:
- Após concluir o processo de cópia, o assistente exibirá o número de registros copiados para cada tabela. Se não houver erros, você pode clicar no botão Fechar botão para fechar a janela:Você pode ver no exemplo anterior que o assistente de importação e exportação pode ser facilmente usado para copiar dados entre diferentes tipos de fontes e destinos de dados, sem considerar o relacionamento entre as tabelas. Se a tabela tiver uma restrição de chave estrangeira que faça referência a uma das colunas da tabela pai, você precisará gerenciar a ordem do processo de cópia de dados manualmente. Além disso, para iniciar um novo processo de importação de dados, você precisará fechar o assistente e abri-lo novamente.
Bomba de dados dbForge
O dbForge Data Pump é uma ferramenta de terceiros incluída no SQL Server Management Studio como um suplemento. Ele pode ser usado para migrar dados facilmente entre o SQL Server e diferentes fontes de dados externas. Ele permite que você importe e exporte de mais de 10 formatos de dados comumente usados (Texto, MS Excel, XML, CSV, JSON etc.) com várias opções e modelos avançados que podem ser utilizados para cenários recorrentes.
Após baixar o dbForge Data Pump da página de download do Devart, você precisará instalá-lo na máquina como um complemento de ferramenta SSMS, conforme mostrado abaixo:
Exportação de dados
O dbForge Data Pump pode ser usado no SSMS para exportar dados de uma tabela de banco de dados SQL Server ou para visualizar dados em 13 tipos de formatos suportados, incluindo HTML, Texto, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL e JSON.
Para exportar dados de uma tabela específica do SQL Server, siga as etapas abaixo:
- Conecte-se à instância do SQL Server por meio do SSMS. No Explorador de Objetos, clique com o botão direito do mouse no banco de dados que contém a tabela de origem e escolha Exportar dados do Data Pump submenu:
- No Formato de exportação janela, escolha o formato do arquivo para o qual os dados da tabela de origem serão exportados ou carregue um modelo salvo anteriormente. Em nosso exemplo, escolheremos MS Excel 2007. Clique no botão Avançar botão para prosseguir:
- Na janela Origem, revise os detalhes da conexão e selecione as tabelas que contêm os dados de origem a serem exportados. Clique em Avançar para prosseguir:
- Nas Opções janela, verifique e defina as diferentes opções personalizáveis para a grade da tabela de dados exportados. Em seguida, clique em Avançar para prosseguir:
- Nos Formatos de dados janela, sob as Colunas guia, selecione as colunas que serão exportadas e revise seus tipos de dados:Além disso, nos Formatos guia, configure o formato de diferentes tipos de dados para as colunas selecionadas. Clique em Próximo botão para prosseguir:
- Nas Configurações de impressão da página janela, você pode definir as diferentes opções para as páginas do arquivo exportado para fins de impressão. Clique em Avançar para prosseguir:
- Nas Linhas exportadas janela, especifique um intervalo de linhas a serem exportadas da tabela de origem ou opte por exportar todas as linhas da tabela. Clique em Avançar para prosseguir:
- O Gerenciamento de erros A janela fornece várias opções que podem ser usadas para especificar como processar erros se eles ocorrerem e onde registrar os resultados da execução. Clique em Salvar Modelo para salvar as configurações como um modelo a ser usado no futuro ou pressione o botão Exportar botão para iniciar o processo de exportação de dados, conforme mostrado abaixo:Durante o processo de exportação de dados, o Data Pump fornecerá mensagens informativas que exibem o número de registros copiados do tabela atual, como mostrado abaixo:Quando o processo de exportação de dados for concluído com sucesso, um resumo do processo de exportação será exibido. Serão fornecidas opções para abrir o arquivo gerado ou a pasta que o contém e exportar mais dados da mesma página sem a necessidade de fechar e reabrir a ferramenta:
Importação de dados
O dbForge Data Pump pode ser usado no SSMS para importar dados para uma tabela de banco de dados SQL Server. Os seguintes 9 formatos de dados amplamente utilizados são suportados:Texto, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) e JSON.
Para importar dados de uma planilha do Excel para uma tabela específica do SQL Server, siga as etapas abaixo:
- Conecte-se à instância do SQL Server usando o SSMS. No Explorador de Objetos, clique com o botão direito do mouse no banco de dados que contém a tabela de banco de dados de destino e escolha Importar Dados do Data Pump submenu:
- No Arquivo de origem janela, escolha o formato do arquivo de origem ou simplesmente carregue um template previamente salvo para realizar o processo de importação. Em nosso exemplo, usaremos o Microsoft Excel 2007 e clicaremos em Procurar botão para localizar a planilha do Excel. Clique em Próximo botão para prosseguir:
- No Destino janela, revise as informações de conexão e especifique se os dados devem ser importados para uma nova tabela ou para uma tabela existente da lista fornecida. Clique em Avançar para prosseguir:
- Nas Opções janela, você pode definir diferentes opções que especificam o local do cabeçalho e os dados no arquivo de origem, com a capacidade de visualizar os dados do arquivo de origem antes de importar. Clique em Avançar para prosseguir:
- Nos Formatos de dados janela, você pode ajustar o formato do tipo de dados para diferentes colunas de texto no arquivo de origem antes de importá-lo para a tabela do banco de dados. Clique em Avançar para prosseguir:
- No Mapeamento janela, você pode mapear as colunas do arquivo de origem para a tabela de banco de dados de destino, com a capacidade de visualizar os dados após realizar a alteração. Clique em Avançar para prosseguir:
- Nos Modos janela, você pode especificar o modo de importação de dados, como anexar os dados aos dados existentes na tabela de destino e executar uma inserção em massa ou importar os dados com uma única transação. Clique em Avançar para prosseguir:
- Na Saída janela, você pode especificar para gerar ou salvar o script de importação de dados ou prosseguir com o processo de importação de dados imediatamente. Clique em Avançar para prosseguir:
- O Tratamento de erros A janela fornece várias opções que podem ser usadas para especificar como se comportar se ocorrerem erros e onde registrar os resultados da execução. Clique em Salvar modelo para salvar as configurações como um modelo a ser usado no futuro, ou Importar botão para iniciar o processo de importação de dados, conforme mostrado abaixo:
- Quando o processo de importação for concluído com êxito, o Assistente exibirá um resumo do número de registros importados. Você poderá revisar o arquivo de log de erros caso ocorra algum erro e importar outros arquivos da mesma janela sem a necessidade de fechar e reabrir a ferramenta:
Está claro no exemplo anterior que a ferramenta dbForge Data Pump nos fornece a capacidade de importar e exportar dados de e para vários formatos de arquivo de dados. O assistente dedicado a isso é simples de configurar, rico em diferentes opções e não requer esforços de desenvolvimento. Merece uma tentativa!