我正在尝试BIML,这条道路充满了试验和错误。
我必须从固定长度的平面文件中传输数据,并且我将文件和字段的元数据存储在两个SQL Server表中: SourceTable和SourceColumn。因此,我尝试了以下方法来为我的字段生成元数据:
<Tables>
<# Dim dtTables as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString, "SELECT TableName FROM SourceTable")
for each dr as datarow In dtTables.Rows#>
<Table Name="<#= dr.item(0)#>" SchemaName="myDatabase.mySchema">
<Columns>
<# Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '+<#=dr.item(0)#>+'")
for each drColumn as datarow in dtColumns.Rows#>
<Column Name="<#= drColumn.Item(0) #>"></Column>
<#next#>
</Columns>
</Table>
<#next#>
</Tables>当然,BIML不希望我在第二个查询中间连接<#=dr.item(0)#> (表名)。
有没有办法做到这一点?
谢谢!
西蒙。
发布于 2021-04-24 04:49:05
当您在<#中时,您处于“普通”编码空间中,因此您可以访问任何可用的变量
变化
Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '+<#=dr.item(0)#>+'")至
Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '" & dr.item(0) & "'")是的,对于未来的评论者来说,如果有人将sql注入添加到您的表中,这可能会有风险,但如果发生了,您已经被拥有了。
https://stackoverflow.com/questions/67236202
复制相似问题