Да, это нормально.
На самом деле у вас нет каталога с именем ~
.Когда вы выполняете команду в командной строке, оболочка расширится от ~
до /home/rihiraj12
перед запуском программы.Но здесь вы не используете оболочку, поэтому ~
интерпретируется буквально.
В качестве обходного пути вы можете сказать
COPY dhcpd_data (...) FROM PROGRAM 'cat ~/outputcsvre.csv' ...
Но обратите внимание, что команда COPY
выполняется командойсервер, так что это заставит сервер порождать команду cat
и использовать домашний каталог сервера PostgreSQL.
Чтобы указать файл с вашей собственной точки зрения, вы можете (в psql) использовать\copy
мета-команда (которая имеет тот же синтаксис, что и COPY
):
\copy dhcpd_data (...) FROM PROGRAM 'cat ~/outputcsvre.csv' ...
Это будет использовать ваш собственный домашний каталог как ~
.