Votre distribution est erronée, vous ne pouvez pas désimbriquer text
.
Essayez
INSERT INTO mytable (x, y)
SELECT
unnest('{x1, x2, x3}' :: TEXT []),
unnest('{y1, y2, y3}' :: TEXT []);
Notez que cette forme de select se comporte bizarrement si les deux tableaux n'ont pas la même longueur.
La fonction unnest dans postgres 9.4+ vous permet d'étendre plusieurs tableaux, en utilisant un tableau par colonne de sortie :
INSERT INTO mytable
SELECT *
FROM unnest('{x1, x2, x3}' :: TEXT [], '{y1, y2, y3, y4}' :: TEXT [])