Na verdade, você não pode executar
\copy via pg_query() . É não é um comando SQL . É um meta-comando do psql cliente. Lá você pode excutar:
\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'
Ou execute o comando shell:
psql mydb -c "\copy data1 FROM 'data1.txt'
WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"
Observe as citações. Os valores precisam estar entre aspas simples no PostgreSQL:
'value' .Aspas duplas são para identificadores - e só são realmente necessárias para identificadores com letras maiúsculas ou caracteres ilegais ou para palavras reservadas:
"My table" .