ich einen ETL-Job schreibe, in C#, mit Rhino ETLRhinoETL - Join zwei Tabellen als Eingabe, schreiben Sie an zwei Tabellen auf Ausgabe
ich eine Datenbank auf ServerA haben. Dies hat zwei Tabellen:
(Beispiel)
tblOrder
- OrderID
- Kundenname
- CustomerEmailAddress Übertragene
tblOrderLine
- OrderID
- ProductID
- Product
- Preis
auf ServerB, hat es eine identische Tabelle (Aufträge von Web übertragen werden, zu unserem Backend System)
Mit RhinoETL, mein InputCommandOperation sieht derzeit wie:
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";
}
}
Da es keine Transformationen sind in diesem Stadium zu tun, mein OutputCommandOperation wird wie folgt aussehen:
class WriteOrdersToServerB : OutputCommandOperation
{
protected override void PrepareCommand(IDbCommand cmd, Row row)
{
cmd.CommandText =
@"INSERT INTO etc...........";
}
}
Was ich will, ist, dies zu tun ändern process, um auch die tblOrderLine-Details von ServerA zu bekommen - wenn möglich, ohne eine Sekunden-Abfrage auf der db (join) Ich bin bestrebt zu vermeiden, eine "Übertragen" -Spalte in der TblOrderLine-Tabelle, und würde lieber den InputCommand zu ändern schließen Sie eine Verbindung ein.
Wie funktioniert die Einfügeoperation nach einem Join im InputCommand? Ist das überhaupt möglich?