我正在使用 Rhino ETL 在 c# 中编写 ETL 作业
我在 ServerA 上有一个数据库。这有 2 个表:
(例子)
订单
- 订单编号
- 顾客姓名
- 客户电子邮件地址
- 转移
订单行
- 订单编号
- 产品编号
- 产品名称
- 价格
在 ServerB 上,它有一个相同的表(订单从 Web 传输到我们的后端系统)
使用 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 进行秒查询(加入)我很想避免在 tblOrderLine 表上有一个“Transferred”列,并且更愿意修改 InputCommand 以包含一个连接..
在 InputCommand 中加入 Join 后插入操作如何工作?这甚至可能吗?