<#@ import namespace="Varigence.Hadron.CoreLowerer.SchemaManagement" #> <# // This is inelegant. We would normally use an approach similar to http://bimlscript.com/Snippet/Details/33 where we reference an existing connection. // In this case, we are instantiating a new connection in code, so that the sample is entirely self-contained in one file. var sourceConnectionString = "Provider=SQLNCLI10;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=DataPatterns"; var connection = new AstOleDbConnectionNode(null) { ConnectionString = sourceConnectionString }; var importResult = connection.ImportDB("","",ImportOptions.ExcludeForeignKey | ImportOptions.ExcludeColumnDefault | ImportOptions.ExcludeViews);#> <Biml xmlns="http://schemas.varigence.com/biml.xsd"> <Connections> <OleDbConnection Name="Source" ConnectionString="<#=sourceConnectionString #>" /> <OleDbConnection Name="Target" ConnectionString="Provider=SQLNCLI10;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=DataPatterns" /> </Connections> <Packages> <Package Name="Copy All" ConstraintMode="Parallel" AutoCreateConfigurationsType="None"> <Tasks> <!-- Creates a new dataflow for each table in the target DB --> <# foreach (var table in importResult.TableNodes) { #> <Dataflow Name="Copy <#=table.Name#>"> <Transformations> <OleDbSource Name="Retrieve <#=table.Name#>" ConnectionName="Source"> <DirectInput>SELECT * FROM <#=table.SchemaQualifiedName#></DirectInput> </OleDbSource> <OleDbDestination Name="Load <#=table.Name#>" ConnectionName="Target"> <ExternalTableOutput Table="<#=table.SchemaQualifiedName#>"/> </OleDbDestination> </Transformations> </Dataflow> <# } #> </Tasks> </Package> </Packages> </Biml>
In previous snippets such as 'Import Database Assets into Biml' and 'Extract All Tables,' we saw examples of how to do a simple copy of all tables in a project and how to directly access a live database from Biml. In this snippet, we will bring the two examples together to directly copy all tables from a source database into a target, without any required fore-knowledge of the source schema. This sample could be supplemented with a second script that would create the target schema prior to attempting the copy. For an example of that, check out 'Use GetTableSql() Utility Extension to Create T-SQL CREATE TABLE Scripts.'
Comments
There are no comments yet.