2

大きなpostgres8.1テーブルから2、3行を使用してエクスポートしようとしています

copy (select * from tablename limit 100) to 'absolute path to file';

しかし、私は得る

ERROR:  syntax error at or near "(" at character 6.

何がうまくいかない可能性があるアイデアはありますか?ちなみに、私はデータベースのスーパーユーザーではありませんが、別の種類のエラーが発生したと思います。コピーを使用する以外に、SQLからいくつかの行を(コーディングせずに簡単に挿入できる形式で)ダンプする他のアイデアがある場合は、提案を受け入れます。

4

2 に答える 2

3

バージョン8.1の欠点を克服するために、を作成して次の場所TEMPORARY TABLEで使用できCOPY TOます。

CREATE TEMP TABLE t_tmp AS
SELECT * FROM tablename LIMIT 100;

COPY t_tmp TO '/absolute/path/to/file';

温度 テーブルは、セッションの終了時に自動的に削除されます。接続を開いたままにしておきたい場合は、テーブルを明示的に削除するか、ロールバックするトランザクションでラップすることができます(ファイルに既に書き込まれているものはロールバックされません)。

BEGIN;
CREATE ...;
COPY ...;
ROLLBACK;

または、より新しいバージョンにアップグレードします。これは、一般的に非常に良いアイデアです。
PostgreSQL8.1は2010年11月に終了しました

于 2012-11-28T11:34:38.090 に答える
0

postgresql 8.1ではCOPY、からカントできますSELECT。8.2で追加されました

ここhttp://www.postgresql.org/docs/8.1/static/sql-copy.htmlとここhttp://www.postgresql.org/docs/8.2/static/sql-copy.htmlの違いを見てください

于 2012-11-28T11:00:02.863 に答える