postgreSQL - psql \ i: як виконати сценарій у заданому шляху


79

Я новачок у postgreSQL і маю просте запитання:

Я намагаюся створити простий скрипт, який створює БД, щоб пізніше я міг назвати це так:

psql -f createDB.sql

Я хочу, щоб скрипт викликав інші сценарії (окремі для створення таблиць, додавання обмежень, функцій тощо), наприклад:

\i script1.sql
\i script2.sql

Це чудово працює за умови, що createDB.sql знаходиться в тому ж каталозі .

Але якщо я переміщу script2 в каталог під директорією з createDB, і модифікую createDB так, щоб це виглядало так:

\i script1.sql
\i somedir\script2.sql

Я отримую повідомлення про помилку:

psql: createDB.sql: 2: somedir: Дозвіл відмовлено

Я використовую Postgres Plus 8.3 для Windows, користувач postgres за замовчуванням.

РЕДАГУВАТИ:

Нерозумно, коса риска Unix вирішила проблему.

Відповіді:


105

Postgres стартував на Linux / Unix. Я підозрюю, що зворотна скісна риска була виправлена.

\i somedir/script2.sql 

Якщо вам потрібно повністю кваліфікувати щось

\i c:/somedir/script2.sql

Якщо це не виправить, наступним моїм припущенням буде те, що вам потрібно уникнути зворотної скісної риски.

\i somedir\\script2.sql

7
Зворотних похилих рисків було достатньо, втечі не були необхідними.
Дейв

2
Зауважимо, що похилі риски вперед чудово застосовуються в Windows і підтримуються власним чином. Таким чином, ви можете використовувати скісні риски майже скрізь у Windows (за винятком погано написаних програм). Оскільки зворотна коса риса часто використовується як символ втечі, її поведінка буде несумісною між програмами і навіть використовуватиметься всередині однієї програми.
Кет

6

Ви пробували використовувати риски стилю Unix (/ замість \)?

\ часто є символом втечі або команди і може спричинити плутанину. У мене ніколи не було проблем з цим, але у мене також немає Windows, тому я не можу його перевірити.

Крім того, дозволи можуть базуватися на користувачеві, який запускає psql, або, можливо, на користувачеві, який виконує службу postmaster, переконайтеся, що обидва читали цей файл у цьому каталозі.



0

я спробував це та його роботу в машині Windows, щоб запустити файл sql за певною схемою.

psql -h localhost -p 5432 -U ім'я користувача -d ім'я бази даних -v schema = ім'я схеми <e: \ Table.sql

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.