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"
.