What's up,
I did not understand completely the trhead , but is this something similar to what you want?. If it is, then we can make it perform you requirements.
DECLARE @MetaData as table (InputTable varchar(50), Column1 varchar(50), Column2 varchar(50),OutputTable varchar(50))
INSERT INTO @MetaData
SELECT 'TableA', 'ColName1', 'NULL', 'TableD' UNION
SELECT 'TableA', 'ColName2', 'NULL', 'TableE' UNION
SELECT 'TableA', 'ColName3', 'NULL', 'TableF' UNION
SELECT 'TableB', 'ColName4', 'ColName1', 'TableG' UNION
SELECT 'TableB', 'ColName5', 'NULL', 'TableH' UNION
SELECT 'TableB', 'ColName6', 'NULL', 'TableI'
DECLARE @SqlCommands AS VARCHAR(MAX)
SET @SqlCommands = ''
SELECT @SqlCommands = @SqlCommands + 'INSERT INTO '+OutputTable+' SELECT '+Column1+' FROM '+InputTable+';'+ CHAR(13)+CHAR(10)
FROM @MetaData
PRINT @SqlCommands
--EXEC @SqlCommands