我写的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中加入后,插入操作如何工作? 这甚至可能吗?