我有一个包含4个字段的准备表。记录准备好后,我使用下面的sql脚本将它们插入到现有表中。它工作得很好但是我想在SSIS中观察这个过程。这可能吗?
下面的所有字段都存在于目标表中,但只有括号中的4个在我的源表中。使用TSQL,这非常简单。但我在SSIS中最接近的是使用派生列并添加列,但它不会让我创建GUID。我在TSQL中格式化了一些日期字段,这在此对话框中是不可能的。
use MyDatabase
insert into dbo.DestinationTable (FILEID,
FILENAME,
STATUS,
LIBRARY,
FILESIZE,
MAJREV,
MINREV,
IMPORTDATE,
IMPORTTIME,
[CATNUM],
[MATDESC],
[CATCLASS],
[DOCVER])
select NEWID()
[PartNumber],
'In',
'Projects',
0,
0.0,
0.0,
DATEPART(YYYY, GETDATE()),
DATEPART(HH, GETDATE()),
[Catalog #],
[Material Description],
[Catalog Class],
[Document Version]
from dbo.SourceTable;
答案 0 :(得分:0)
当您进行查询时,在数据源组件中,您拥有相同的查询有什么问题?它将为您创建一个GUID。并确保它是数据类型GUID,您执行派生列转换并使用以下表达式将任何字符串转换为GUID
(DT_GUID) ("{" + YourGuid + "}")
如果您不想使用源查询创建它,可以创建一个脚本组件(在您的数据流中),为每行生成一个GUID。脚本将是这样的
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
// Create a Globally Unique Identifier with SSIS
Row.Guid = System.Guid.NewGuid();
}
}
点击此链接了解更多详情Create GUIDs in SSIS