[pgsql-jp: 27551] Re: コピーコマンドについて

Naofumi Kondoh nkon @ shonan.ne.jp
2002年 10月 5日 (土) 01:20:41 JST


ソフト工房の近藤です。

Susumu Nagamatsu wrote:
> COPY コマンドについて教えて下さい。
> 
> COPYコマンドを使って、データベースDB1のテーブルtable1を、データベースDB2へコピーしようと
> してます。
> 1.DB1=> copy table1 to 'var/tmp/file1'
> 2.DB2=> copy table1 from 'var/tmp/file1'

SQL 文なのに、末尾の  ;  (セミコロン)がないですが、
typo かな?。


> 上記1番で一旦テキストファイルに変換し、それを基に上記2番でデータベースDB2のtable1を作成しようとしました。
> (データベースDB2のtable1は事前にcreate tableで作成済み)
> 
> 2番を実行すると下記のようなエラーになってしまいます。
> (1番は問題なく実行できました)
> 
> ERROR:  COPY command, running in backend with effective uid 500, could not open file 'var/tmp/file1
>  for reading.  Errno = No such file or directory (2).
> 
> (これを実行するユーザ「postgres」はfile1を当然読む権限はあります)
> 
> いったい何が悪いのか見当がつきません。

エラーメッセージ通りに確認してみましたか?。

(1)uid 500 のユーザーで、両方のコマンドを実行していますか?。

(2)ls -l /var/tmp/file1  で、owner と permission を確認
   しましたか?    そのファイルは存在しますか?。

(3)ファイルは作成されていますか?。
   uid 500 のユーザーになって、
      wc -l /var/tmp/file1 などで、件数を確認してみては。


> 環境:RedHat Linux 7.3
>       PostgreSQL 7.2.1
> 
> ご教示のほどお願い致します。
> 
> ちなみに異なるデータベース間でテーブルをSQL文だけでコピーする方法は、COPYコマンドを使うしか
> 無いでしょうか?

SQL だけという条件なら COPY しかないですね。

UNIX コマンドを使えるならば、pg_dump と psql で、
DDL 文(CREATE TABLE 等々)ごと別の DB に複製できます。
勿論、データーだけでも可能。pg_dump には、いろんな
便利なオプションがあるので、マニュアルを見てください。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon @ shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-10-24(木)19:00-21:30 第7回 JPUG 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/





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