Nesse post, vou falar sobre um recurso muito interessante do SQL Server e que funciona como um grande diferencial do banco de dados, que é a capacidade de integrar nativamente, com o Excel, permitindo consultar e manipular planilhas através do banco de dados, sem precisar de nenhum outro recurso externo.
Como Importar uma planilha do Excel para o SQL Server
A forma mais utilizada com certeza é a leitura de dados de uma planilha do Excel para o banco de dados SQL Server. Para isso, vamos utilizar o OPENROWSET e o driver ACE OLEDB 12.0, uma vez que meu sistema operacional e o meu banco estão na versão 64 bits e utilizando uma planilha do Office 2016 (O plugin JET suporta até a versão 2003).
O comando básico para a leitura é assim:
Transact-SQL
1
2
3
4
5
6
SELECT*
FROMOPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Teste.xlsx;',
'SELECT * FROM [Aba1$]'
)
Exemplo:
Uma outra forma, que deixa essa integração bem mais fácil, é criar uma Stored Procedure para facilitar a utilização dos dados:
Transact-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATEPROCEDURE[dbo].[stpImporta_Excel](
@CaminhoVARCHAR(5000),
@AbaVARCHAR(200),
@ColunasVARCHAR(5000)
)
AS
BEGIN
DECLARE@ExecVARCHAR(MAX)
SET@Exec='SELECT * from OPENROWSET (''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database='
+@Caminho
+';'', ''SELECT '
+@Colunas
+' FROM ['
+@Aba
+'$]'') A'
EXEC(@Exec)
END
E aí você pode utilizar assim:
Você pode retornar apenas colunas específicas também:
Ou importar o resultado para uma tabela do banco de dados:
Exportando dados do banco para o Excel
Como inserir/exportar dados do SQL Server para o Excel
De uma forma muito simples, também é possível inserir dados do nosso banco de dados para uma planilha do Excel. A sintaxe básica é a seguinte:
Transact-SQL
1
2
3
4
5
6
7
INSERTINTO
OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Teste.xlsx;',
'SELECT * FROM [Aba1$]'
)
SELECT'Paulo',32,2584.44
Exemplo da inserção:
Exemplo da consulta comprovando que o registro foi inserido:
Inserindo a partir de uma tabela:
Mais uma vez, podemos utilizar uma Stored Procedure para facilitar as operações durante o dia a dia:
Infelizmente, apagar dados de planilhas do Excel pelo SQL Server não é possível. Caso você tente, encontrará essa mensagem de erro:
OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “(null)” returned message “Deleting data in a linked table is not supported by this ISAM.”.
Msg 7345, Level 16, State 1, Line 1
É isso aí, pessoal!
Um abraço e obrigado pela visita.
sql server importar ler exportar atualizar dados de uma planilha do excel para o banco import read export data spreadsheet datasheet
sql server importar ler exportar atualizar dados de uma planilha do excel para o banco import read export data spreadsheet datasheet
Boa Noite! Tenho uma base no Excel e trouxe ela para o SQL, porém como faço pra atualizar a tabela toda no SQL? Exemplo acrescentei mais uma linha no excel com mais informações e agora quero que traga no SQL.
TOP!!…Vou procurar aqui como fazer isso com arquivos CSV,
Obrigadi