我正在使用 BIML 和 BIDSHelper 创建 SSIS 包。我正在尝试将数据从 csv 导入到 sql server。我想在数据流发生之前在目标数据库中创建表。这是我的代码:
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection Name="CM_OLE"
ConnectionString="Data Source=(localdb)\projects;Initial Catalog=test;Integrated Security=SSPI;Provider=SQLNCLI11">
</OleDbConnection>
<FlatFileConnection
Name="FF Source"
FileFormat="FFF Source"
FilePath="F:\test.csv"
CreateInProject="false" />
</Connections>
<FileFormats>
<FlatFileFormat
Name="FFF Source"
CodePage="1252"
RowDelimiter="CRLF"
ColumnNamesInFirstDataRow="true"
IsUnicode="false"
FlatFileType="Delimited"
TextQualifer="_x0022_"
HeaderRowsToSkip="0">
<Columns>
<Column Name="Column1" Length="50" InputLength="50" MaximumWidth="50" DataType="AnsiString" ColumnType="Delimited" CodePage="1252" Delimiter="," TextQualified="true" />
<Column Name="Column2" Precision="10" Scale="2" DataType="Decimal" ColumnType="Delimited" CodePage="1252" Delimiter="CRLF" TextQualified="true" />
</Columns>
</FlatFileFormat>
</FileFormats>
<Packages>
<Package ConstraintMode="Linear" Name="NumericParsingFromFlatFileInsertIdentity">
<Tasks>
<ExecuteSQL Name="Create table sometablename" ConnectionName="CM_OLE">
<DirectInput>
CREATE TABLE sometablename(column1 varchar(50) NOT NULL, column2 varchar(10,2) NOT NULL);
GO
</DirectInput>
</ExecuteSQL>
<Dataflow Name="DFT Source">
<Transformations>
<FlatFileSource ConnectionName="FF Source" Name="FF Source" />
<OleDbDestination ConnectionName="CM_OLE" Name="OLEDB DST">
<ExternalTableOutput Table="sometablename"></ExternalTableOutput>
</OleDbDestination>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
当我尝试生成包时,它说cannot execute query select * from sometablename invalid object name
。我知道该表sometablename
不存在,因此会引发错误。那么,我怎样才能自动创建表呢?我已经阅读了BI Thoughts and Theories系列。第 2 部分展示了创建表的方法。我的理解是,最后它还会创建 ExecuteSQl 来创建表。我很困惑如何在数据流之前运行表创建脚本或其他替代 BIML 必须提供什么?
提前致谢