Skip to the content

Hoe importeer ik een Excel bestand in SQL Server

Er zijn verschillende methodes om de inhoudt van een Excelbestand te importeren in SQL server. Ik gebruik bij voorkeur niet de importwizard omdat je daarvoor ook integration services in moet richten en dat gaat ten koste van de performance.

In dit blog beperk ik me dan ook tot het importeren van een Excel bestand met de OPENROWSET methode bij een 64Bit installatie van SQL server.

Voor dat je verder gaat moet je een aantal zaken hebben geregeld op je SQL server. Log daarvoor bij voorkeur in met je sa account.

Heb je een 64Bit installatie uitgevoerd van SQL server en een 32Bit versie van Office dan moet je op zoek naar een ander alternatief en is deze handleiding niet zinvol.

Nog geen office of een database engine geïnstalleerd

Heb je nog geen Office geïnstalleerd op de SQL server installeer dan een Database engine. Let op dat je bij een 64Bit installatie kiest voor een 64Bit Database engine. De 64Bit versie kan je met onderstaande link downloaden. https://www.microsoft.com/en-us/download/details.aspx?id=13255

Na installatie dien je de database engine te registreren. Open CMD als administrator en voer onderstaande script uit bij een 64Bit installatie.

regsvr32 C:\Windows\SysWOW64\msexcl40.dll

SQL server configureren

Voer vervolgens in SQL server Management studio onderstaande script uit

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
RECONFIGURE;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

Importeer je Excel data

Nu kan je een Excel bestand openen in SQL server met de OPENROWSET methode.

In onderstaande script pas je de waarde “C:\Temp\NaamVanJeExcelBestand.xlsx” aan naar het pad en de naam van je eigen Excel bestand.

Tevens pas je “Tabbladnaam” aan naar de naam van je tabblad waar de gegevens staan die je wilt gebruiken. LET OP vergeet het $ teken niet aan het einde van de tabbladnaam.

Select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Temp\NaamVanJeExcelBestand.xlsx;HDR=YES',
'SELECT * FROM [Tabbladnaam$]')

Als je alles volgens de bovenstaande procedure hebt uitgevoerd dan zie je nu de inhoudt van je Excel tabblad en kan je het script afmaken.

INSERT INTO [TABELNAAM] (VELDNAAM1, VELDNAAM2)
Select [Veldnaam1], [Veldnaam2] FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Temp\NaamVanJeExcelBestand.xlsx;HDR=YES',
'SELECT * FROM [Tabbladnaam$]')