[pgsql-jp: 35846] Re: SQL をファイルから実行させるには

Masayuki Tadano tadano @ d-product.co.jp
2005年 8月 17日 (水) 10:13:30 JST


ただのと申します。

> 
> 櫻井です。
> 
> 萱野さん、藤本さん、ありがとうございます。
> 
> 昨日から似たようなコマンドはトライしていて、今日教えていただいた
> コマンドを実行しましたが、エラーになります。
> よろしくお願いします。
> 
> 実行方法としては
> 
> (1) /home/test/insert.sql がSQL文が記述されているファイルで、
>  中身はこの一行が書かれています。
> 
>  insert into wk_qmail_log(mail_address, client_id) values('11111',345);
> 
>  ⇒拡張子は.sql? .sh? chmod で実行権を与えておく?

これは、コマンドが読み込むファイルなので、ファイル名は何でも
良いですし、パーミッションは r があればよいですね。

> (2) ディレクトリを移動
> 
>  cd /usr/local/pgsql/bin
> 
> (3) pgsql(postgreのユーザ)にチェンジ
> 
>   su pgsql
> 
> (4) psqlコマンドを実行
> 
>  psql test01 pgsql < /home/alsok01/insert.sql
> 
> (5) /home/alsok01/insert.sql: 許可がありません
> 

(2) から (5) はどこが間違っているというよりも、複合的なので
すが、簡単に言えば、コマンドを実行しているユーザーに対して
SQLを書いたファイルを読み込む権限があるかってことですね。
# (1)と(5)が矛盾している気も。

なので、
> 
> 櫻井です。
> 
> 自己レスです。
> 
> 
> 先ほどの実行ですが、
> /usr/local/pgsql/bin の下にSQLファイル insert.sql を置いたらうまく
> SQLが実行できました。

は可能だったと思うのですが、あまりいい解決策ではないですよね。

利用するユーザに PostgreSQL の設定(PATHなど)を設定して、そこ
からコマンドを実行するほうがよいような気がします。




-- 
Masayuki Tadano <tadano @ d-product.co.jp>





pgsql-jp メーリングリストの案内