2015-05-23 77 views
1

我有一個4字段的準備表。一旦記錄準備就緒,我使用下面的sql腳本將它們插入到現有的表中。它很好用,但我想在SSIS中觀看這個過​​程。這可能嗎?將記錄插入帶有GUID和其他幾列的表中?

以下所有字段都存在於目標表中,但括號中只有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

在數據源組件中執行查詢時,在數據源組件中執行相同查詢時遇到了什麼問題?它會爲你創建一個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

相關問題