Very interesting approach. Without more test data I cant say is its any faster than straight inserts (below) but a nicely written article. Many thanks for taking the time to share.
INSERT INTO dbo.NT_Client(ClientName,Town)
SELECT DISTINCT ClientName,Town FROM dbo.NT_SourceData
INSERT INTO dbo.NT_OrderHeader (Client_ID,OrderNumber,OrderDate)
SELECT DISTINCT c.ID,d.OrderNumber,d.OrderDate
FROM dbo.NT_SourceData d INNER JOIN dbo.NT_Client c ON c.ClientName=d.ClientName AND c.Town=d.Town
INSERT INTO dbo.NT_OrderDetail (OrderHeader_ID,ItemNo,ItemQuantity,ItemCost,ItemTotal)
SELECT DISTINCT h.ID,d.ItemID,d.ItemQty,d.ItemCost,d.ItemTotal
FROM dbo.NT_SourceData d INNER JOIN dbo.NT_OrderHeader h ON d.OrderNumber=h.OrderNumber
Pete