[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 メーリングリストの案内