insert into t_array select array[row((data_comp).*)::mytype[] from t_composite;
I'm not sure why I need (data_comp).* rather than some of the other things that I tried and failed with...
The unusual set of parentheses are so the parser interprets data_comp is a column and not a table. Usually one write SELECT tbl.* FROM tbl so that is the assumed meaning of "name".*