Write a (parameterised if needed) stored procedure to perform a set based insert and call the sp rather than loading the data and doing a one row at a time insert;
INSERT INTO A
(
COLUMN_A
,COLUMN_B
,COLUMN_C
,COLUMN_D
)
SELECT
COLUMN_W
,COLUMN_X
,COLUMN_Y
,COLUMN_Z
FROM
B
WHERE
B.COLUMN_Z = @MyParameter;