我寫的ETL任務的兩個表,在C#中,使用犀牛ETLRhinoETL - 加入兩個表的輸入,寫輸出
我在ServerA上的數據庫。這具有2個表:
(實施例)
tblOrder
- 的OrderID
- 客戶名稱
- CustomerEmailAddress
- 轉移
tblOrderLine
- 的OrderID
- 的ProductID
- 產品名稱
- 價格
在服務器B,它具有相同的表(訂單從網絡轉移到我們的後端系統)
使用RhinoETL,我InputCommandOperation目前的樣子:
class ReadOrdersFromWebDB : InputCommandOperation
{
public ReadOrdersFromServerA(ConnectionStringSettings connectionStringSettings)
: base(connectionStringSettings) { }
protected override Row CreateRowFromReader(IDataReader reader)
{
return Row.FromReader(reader);
}
protected override void PrepareCommand(IDbCommand cmd)
{
cmd.CommandText = "SELECT TOP 10 * FROM tblOrders WHERE Transferred = 0";
}
}
由於沒有轉換在這個階段做的,我OutputCommandOperation看起來就像這樣:
class WriteOrdersToServerB : OutputCommandOperation
{
protected override void PrepareCommand(IDbCommand cmd, Row row)
{
cmd.CommandText =
@"INSERT INTO etc...........";
}
}
我想要做的就是修改這個過程,也從ServerA獲取tblOrderLine細節 - 如果可能,不需要在db上執行秒查詢(join) 我非常希望避免在tblOrderLine表上有一個「Transferred」列,並且希望將InputCommand修改爲包括加入..
在InputCommand中加入後,插入操作如何工作? 這甚至可能嗎?