Import von Excel-Dateien mit Biml

Import von Excel-Dateien mit Biml

This blog post has also been published in English.

Wussten Sie, dass Sie in Biml die Methode GetDatabaseSchema auch für Excel Dateien nutzen können?

Hierfür benötigen wir zunächst einen Verweis auf eine Excel Datei in Form einer ExcelConnection:

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
    <Connections>
        <ExcelConnection Name="MyExcel" ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Flatfiles\XLS\MyExcel.xlsx;Extended Properties=&quot;Excel 12.0 XML;HDR=YES&quot;;" />
		<OleDbConnection Name="Target" ConnectionString="Data Source=localhost;initial catalog=MySimpleBiml_Destination;provider=SQLNCLI11;integrated security=SSPI"></OleDbConnection>
    </Connections>
	<Databases>
		<Database Name="MySimpleBiml_Destination" ConnectionName="Target"></Database>
    </Databases>
	<Schemas>
		<Schema Name="dbo" DatabaseName="MySimpleBiml_Destination"></Schema>
    </Schemas>
</Biml>

Auf dieser Verbindung lässt sich nun GetDatabaseSchema aufrufen mit anschließendem Durchlauf der enthaltenen Tabellen – wie bei normalen Datenbanken. Lediglich das Schema müssen wir ergänzen, da Excel dieses verständlicherweise nicht mitliefert:

<#@ template language="VB" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
	<Tables>
	<# Dim XLS as Astdbconnectionnode = rootnode.connections("MyExcel")
	   dim ImportResult as Importresults = xls.getdatabaseschema
	   for each tbl as asttablenode in ImportResult.tablenodes 
	   tbl.schema = rootnode.schemas(0)#>
	<#= tbl.getbiml #>
	<# next #></Tables>
</Biml>

Danach haben wir reguläre Biml Metadaten, auf deren Basis wir Zieltabellen erstellen und Datenflusstasks definieren können:

<#@ template language="VB" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
	<Packages>
		<Package Name="Build_Staging">
			<Tasks>
				<# for each tbl as asttablenode in rootnode.tables #>
					<ExecuteSQL Name="Create <#=tbl.name #>" ConnectionName="Target">
						<DirectInput><#= tbl.getdropandcreateddl #></DirectInput>
					</ExecuteSQL>
				<# next #>
            </Tasks>
        </Package>
    </Packages>
</Biml>

Das Prinzip folgt dem Standard SSIS Ansatz und hat somit die gleichen Schwachstellen bezüglich Datentyperkennung. In den Fällen, in denen ein direkter Excel Import in SSIS aber anwendbar ist wird es durch Biml noch leichter!

Haben Sie hierzu Fragen oder Anmerkungen? Wir freuen uns auf Ihren Input unter biml@solisyon.de!

Weitere Informationen zu Biml, einschließlich Terminen und Blog Beiträgen finden Sie auch auf unserer Biml Seite.

Viel Spaß beim Biml’n!

Facebook