1. ホーム
  2. postgresql

postgreSQL - psql \i: How to execute script in given path.

2023-09-10 14:42:08

質問

私はpostgreSQLの初心者なのですが、簡単な質問があります。

私はDBを作成する簡単なスクリプトを作成しようとしているので、後でこのようにそれを呼び出すことができます。

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 for windows、デフォルトのpostgresユーザーを使用しています。

EDITです。

バカだなぁ、unixのスラッシュで解決しちゃったよ。

どのように解決したのですか?

Linux/UnixでPostgresを起動しました。 スラッシュを反転させると直るのではないかと思います。

\i somedir/script2.sql 

何かを完全に修飾する必要がある場合

\i c:/somedir/script2.sql

それでも直らない場合は、バックスラッシュをエスケープする必要があるのでしょう。

\i somedir\\script2.sql