我想用biml将数据从oracle传输到SQL。
到目前为止,我能够创建一个(简单的)包来手动传输数据。此包包含一个SQL_目标值连接(本机OLEDB)、一个Oracle连接( OleDBDestination \attunity)、一个Oracle和一个OleDBDestination。
在创建了这个包之后,我尝试将这个包转换为BIML,但是只得到了一个"CustomSsisConnection“(=Oracle )和一个"Connection”(SQL)。包本身不包含在新的biml脚本中。
基于创建的连接,我尝试自己对包进行“编码”,并提出了以下代码:
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<Connection Name="SQL.DWH_NEW" ConnectionString="data source=SOMESERVER;initial catalog=DWH_NEW;provider=SQLNCLI11.1;integrated security=SSPI;auto translate=False;" />
<CustomSsisConnection Name="OracleSource" CreationName="ORACLE" ObjectData="<DTS:ConnectionManager xmlns:DTS="www.microsoft.com/SqlServer/Dts">
 <OraConnectionString>SERVER=SomeOracleServer;USERNAME=myUser;WINAUTH=0;data source=SomeOracleServer;user id=myUser;</OraConnectionString>
 <OraPassword Sensitive="1"></OraPassword>
 <OraRetain>False</OraRetain>
 <OraInitialCatalog></OraInitialCatalog>
 <OraServerName>SomeOracleServer</OraServerName>
 <OraUserName>ext-bi-pg</OraUserName>
 <OraOracleHome></OraOracleHome>
 <OraOracleHome64></OraOracleHome64>
 <OraWinAuthentication>False</OraWinAuthentication>
 <OraEnableDetailedTracing>False</OraEnableDetailedTracing>
</DTS:ConnectionManager>" />
</Connections>
<Packages>
<Package Name="Package2" Language="None" ConstraintMode="LinearOnCompletion" ProtectionLevel="EncryptSensitiveWithPassword">
<Tasks>
<Dataflow Name="Data Flow Task">
<Transformations>
<OracleSource Name="oracleSourceStmt" Connection="OracleSource" >
<DirectInput>"SELECT * FROM SomeTable"</DirectInput>
</OracleSource>
<OleDbDestination Name="OLE DB Destination" ConnectionName="SQL.DWH_NEW">
<ExternalTableOutput Table="[dbo].[SomeTable]" />
</OleDbDestination>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
</Biml>如果我检查我得到的错误,“无法解析.在属性'Connection‘中的引用。’”无效。请提供有效的范围名称。
我也尝试使用"OracelConnection“而不是CustomSSISConnection,但是我确实收到了另一条错误消息:OracelConnection未检测到。安装与Biml/BimlStudio版本相匹配的32位或64位版本的oracle客户端访问。
我确实读过Scott的“使用”,但这也没有什么帮助,因为现在应该已经有了对Attunity连接器的内置支持。
。
这么多问题--希望有人能帮上忙!
你好,Gregor
发布于 2020-12-11 17:02:19
我在使用BimlExpress时发现的用于的格式是下面的格式,虽然在我自己开发的Biml框架中到处都是嵌入式变量名,但它应该会让您朝着正确的方向前进。
Oracle连接节点
Expressions节点是如何将连接设置为从项目参数中获取值的,我一直认为将其作为保存、重新部署以更改一个小配置值的选项非常有用:
<CustomSsisConnection Name="<#=ConnectionName#>"
CreationName="MSORA"
ObjectData="<OracleXMLPackage><OraConnectionString><#=conn#></OraConnectionString><OraRetain>False</OraRetain><OraInitialCatalog></OraInitialCatalog><OraServerName><#=ServerName#></OraServerName><OraUserName><#=Username#></OraUserName><OraOracleHome><#=Config.GetConfigValue(@"OracleHome")#></OraOracleHome><OraOracleHome64><#=Config.GetConfigValue(@"OracleHome")#></OraOracleHome64><OraWinAuthentication>False</OraWinAuthentication><OraEnableDetailedTracing>False</OraEnableDetailedTracing><OraPassword Sensitive="1" Encrypted="0"><#=Password#></OraPassword></OracleXMLPackage>"
CreateInProject="true"
>
<Expressions>
<Expression ExternalProperty="ConnectionString"
>@[$Project::<#=ConnectionName#>_Conn]</Expression>
<Expression ExternalProperty="OracleHome"
>@[$Project::OracleHome]</Expression>
<Expression ExternalProperty="OracleHome64"
>@[$Project::OracleHome64]</Expression>
</Expressions>
</CustomSsisConnection>Oracle数据源节点
注意,这是一个自定义组件,它将输出一个Attunity源代码。所以你必须在你的机器上找到这个。同样,框架中也有一些遗物,但是它们应该可以帮助您了解到底发生了什么。如果您没有像我这样以编程方式执行此操作,那么最大的麻烦是添加所有列及其数据类型:
<CustomComponent Name="<#=SourceTechType#>Src - Retrieve Rows - <#=FromSchema#> <#=FromTable#>"
LocaleId="None"
Version="4"
UsesDispositions="true"
ComponentClassId="{CB67CD40-126C-4280-912D-2A625DFAFB66}"
ComponentTypeName="CB67CD40-126C-4280-912D-2A625DFAFB66"
ContactInfo="Oracle Source;Microsoft Connector for Oracle by Attunity; Attunity Ltd.; All Rights Reserved; http://www.attunity.com;4"
>
<Annotations>
<Annotation AnnotationType="Description">Microsoft Oracle Source Component by Attunity</Annotation>
</Annotations>
<CustomProperties>
<CustomProperty Name="BatchSize" DataType="Int32" SupportsExpression="true" Description="The number of rows fetched in a batch.">100000</CustomProperty>
<CustomProperty Name="PrefetchCount" DataType="Int32" SupportsExpression="true" Description="Number of pre-fetched rows.">0</CustomProperty>
<CustomProperty Name="LobChunkSize" DataType="Int32" SupportsExpression="true" Description="Determines the chunk size allocation for LOB columns">32768</CustomProperty>
<CustomProperty Name="DefaultCodePage" DataType="Int32" SupportsExpression="true" Description="The code page to use when code page information is unavailable from the data source.">1252</CustomProperty>
<CustomProperty Name="AccessMode" DataType="Int32" TypeConverter="AccessMode" Description="The mode used to access the database.">1</CustomProperty>
<CustomProperty Name="TableName" DataType="String" SupportsExpression="true" Description="The name of the table to be fetched."></CustomProperty>
<CustomProperty Name="SqlCommand" DataType="String" SupportsExpression="true" Description="The SQL command to be executed.">
select cols
from tables
where conditions = met
</CustomProperty>
</CustomProperties>
<Connections>
<Connection Name="MSOraConnection"
ConnectionName="<#=SourceConnectionName#>"
/>
</Connections>
<OutputPaths>
<OutputPath Name="Output"
ErrorRowDisposition="FailComponent"
TruncationRowDisposition="FailComponent"
IsErrorOutput="false"
>
<OutputColumns>
<# foreach (var column in table.Columns) { #>
<OutputColumn Name="<#=column.Name#>"
ExternalMetadataColumnName="<#=column.Name#>"
DataType="<# if(column.GetTag("ConvertFrom").Length > 0) { #><#=column.GetTag("ConvertFrom")#><# } else { #><#=column.DataType#><# } #>"
<# if(column.DataType.ToString() == "String"){ #>CodePage="1252"<# } #>
Length="<#=column.Length#>"
Precision="<#=column.Precision#>"
Scale="<#=column.Scale#>"
/>
<# } #>
</OutputColumns>
<ExternalColumns>
<# foreach (var column in table.Columns) { #>
<ExternalColumn Name="<#=column.Name#>"
DataType="<# if(column.GetTag("ConvertFrom").Length > 0) { #><#=column.GetTag("ConvertFrom")#><# } else { #><#=column.DataType#><# } #>"
<# if(column.DataType.ToString() == "String"){ #>CodePage="1252"<# } #>
Length="<#=column.Length#>"
Precision="<#=column.Precision#>"
Scale="<#=column.Scale#>"
/>
<# } #>
</ExternalColumns>
</OutputPath>
<OutputPath Name="Error"
IsErrorOutput="true">
<OutputColumns>
<# foreach (var column in table.Columns) { #>
<OutputColumn Name="<#=column.Name#>"
DataType="<# if(column.GetTag("ConvertFrom").Length > 0) { #><#=column.GetTag("ConvertFrom")#><# } else { #><#=column.DataType#><# } #>"
<# if(column.DataType.ToString() == "String"){ #>CodePage="1252"<# } #>
Length="<#=column.Length#>"
Precision="<#=column.Precision#>"
Scale="<#=column.Scale#>"
/>
<# } #>
</OutputColumns>
</OutputPath>
</OutputPaths>
</CustomComponent>https://stackoverflow.com/questions/64650970
复制相似问题