Thanks for your replies... I've started a new thread on the subject of updating after transfer: http://groups.google.com/group/rhino-tools-dev/browse_thread/thread/a0f12c5b6689492f I'd be grateful of your insight.
Many thanks, Alex On Dec 17 2010, 10:14 am, Miles Waller <miles.wal...@gmail.com> wrote: > Hi, > > Given that you want to record whether the rows were transferred (presumably > so you can do incremental transfers?), I'd go with transferring the two > tables independently, i.e. option 3 below, because it's just a simpler > process overall (IMHO). > > By adding a "transferred" column to *both* tables, it's trivial to pull out > the rows in the OrderLines table that have not been transferred, and which > correspond to orders that have. In this situation, I'd also go for a > counter to identify which rows were transferred in which run, rather than a > simple yes/no flag. Then you can rollback easily if required, check row > counts for discrepancies in each db etc etc. You can also do the > transfer "in bulk", rather than order-by-order, which would speed things up. > > Miles > > On Thu, Dec 16, 2010 at 7:44 PM, Jason Meckley <jasonmeck...@gmail.com>wrote: > > > > > > > > > you can join > > 1. in the sql statement itself > > 2. as a JoinOperation you implement > > 3. transfer orders and then order lines independent of each other. > > > option 1 will require branching and aggregation to properly insert the > > orders and order lines to the destination > > option 2 doesn't make much sense given the data resides in the same > > database > > option 3 would work, but you would need to track which order lines to > > pull after inserting the orders. > > > option 1 might look like this > > > Register(new ConventionInputCommand("source"){Command = "select * from > > header left join lines ..."}); > > Register(new BranchingOperation() > > .Add(Partial > > .Register(new GroupHeader()) // > > implements abstractaggreateoperation > > .Register(new > > ConventionOutputComand("destionation"){Command = "insert into > > header ...")) > > .Add(new ConventionOutputComand("destionation") > > {Command = "insert into orderlines ...")); > > > option 3 might look like this > > List<object> orderIds = new List<object>() > > Register(new ConventionInputCommand("source"){Command = "select * from > > header ..."}); > > Register(new CollectOrdeIds(orderIds)); > > Register(new ConventionInputCommand("source"){Command = "insert into > > header ..."}); > > > void PostProcessing() > > { > > if(GetAllErrors().Any()) return; > > > using(var process = new TransferOrderLines()) > > { > > process.OrderIds = orderIds; > > process.Execute(); > > } > > } > > > class CollectOrdeIds : AbstractOperation > > { > > private readonly ICollection<object> ordeIds; > > > public CollectOrdeIds(ICollection<object> ordeIds) > > { > > this.orderIds = orderIds; > > } > > > public IEnumerable<Row> Execute(IEnumerable<Row> rows) > > { > > foreach(var row in rows) > > { > > orderIds.Add(row["id"]); > > yield return row; > > } > > } > > } > > > On Dec 16, 9:43 am, Alex Brown <a...@alexjamesbrown.com> wrote: > > > Hi > > > I have a db with a structure similar to: > > > > Orders > > > - ID > > > - CustomerName > > > - CustomerEmailAddress > > > - DeliveryAddress > > > - Transferred > > > > OrderLine > > > - OrderID > > > - ProductName > > > - Price > > > > (you get the idea) > > > > I'm trying to create an ETL process using Rhino ETL that can copy > > > these from ServerA sql server db to ServerB > > > > ServerB tables are identical, so there is no Transform to do as such. > > > > The only thing I need to do is after the transfer of each order (and > > > it's corresponding OrderLine) is set Transferred to 1 (True) on the > > > Orders table for that row. > > > > I've started this... but can't work out how to effectively Join the > > > tables..? > > > Is this something that can be done? Or should I have a separate > > > process (and another Transferred column) on the OrderLine table? > > > -- > > You received this message because you are subscribed to the Google Groups > > "Rhino Tools Dev" group. > > To post to this group, send email to rhino-tools-...@googlegroups.com. > > To unsubscribe from this group, send email to > > rhino-tools-dev+unsubscr...@googlegroups.com<rhino-tools-dev%2Bunsubscribe@ > > googlegroups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/rhino-tools-dev?hl=en. -- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to rhino-tools-...@googlegroups.com. To unsubscribe from this group, send email to rhino-tools-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.