Właściwie nie możesz uruchomić \copy przez pg_query() . To nie jest polecenie SQL . Jest to metapolecenie psql klienta.
Tam możesz wykonać:
\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'
Lub uruchom polecenie powłoki:
psql mydb -c "\copy data1 FROM 'data1.txt'
WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"
Zwróć uwagę na cytaty. Wartości muszą być ujęte w pojedynczy cudzysłów w PostgreSQL:'value' .
Podwójne cudzysłowy dotyczą identyfikatorów - i są faktycznie potrzebne tylko dla identyfikatorów z dużymi lub niedozwolonymi znakami lub dla słów zastrzeżonych:"My table" .