postgreSQL-psql i: Как выполнить скрипт по заданному пути
я новичок в postgreSQL и у меня есть простой вопрос:
Я пытаюсь создать простой скрипт, который создает БД, поэтому я могу позже назвать его так:
psql -f createDB.sql
Я хочу, чтобы скрипт вызывал другие скрипты (отдельные для создания таблиц, добавления ограничений, функций и т. д.), Например:
i script1.sql
i script2.sql
он отлично работает при условии, что createDB.sql находится в тот же реж.
но если я перемещаю script2 в каталог под одним с createDB, и изменить createDB так это выглядит так:
i script1.sql
i somedirscript2.sql
Я получаю сообщение об ошибке:
psql: createDB.sql: 2: somedir: отказано в разрешении
Я использую Postgres Plus 8.3 для windows, пользователя postgres по умолчанию.
EDIT:
глупый я, Unix косые черты решили проблему.
4 ответа:
Postgres запущен на Linux / Unix. Я подозреваю, что реверсирование косой черты с помощью fix it.
\i somedir/script2.sql
Если вам нужно полностью квалифицировать что-то
\i c:/somedir/script2.sql
Если это не исправить, мое следующее предположение будет вам нужно избежать обратной косой черты.
\i somedir\script2.sql
вы пробовали использовать слеши в стиле Unix (/вместо\)?
\ часто является символом escape или command и может быть источником путаницы. У меня никогда не было проблем с этим, но у меня также нет окон, поэтому я не могу проверить его.
кроме того, разрешения могут быть основаны на пользователе, выполняющем psql, или, возможно, пользователь, выполняющий службу postmaster, проверяет, что оба прочитали этот файл в этом каталоге.