助け合いフォーラム

OSS-DB

OSS-DB Silver(Ver2.0)
問題ID : 12103
問題を開く
「sample」テーブルの内容を各行のカラムごとにカンマで区切り、クライアント側に「sample.txt」ファイルとして出力したい。以下のうち適切な書式はどれか。(2つ選択)

この問題はプレミアムコンテンツです。

上に戻る

「\copy sample to 'sample.txt' csv」も正答ではないでしょうか

投稿日 2023/02/21

マニュアルのCOPYの構文を見ると、ファイル名は '' でくくられており、間違いだとは思えません。
以下、PostgreSQL 11.5のマニュアルから抜粋です。

COPY table_name [ ( column_name [, ...] ) ]
    FROM { 'filename' | PROGRAM 'command' | STDIN }
    [ [ WITH ] ( option [, ...] ) ]

COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
    TO { 'filename' | PROGRAM 'command' | STDOUT }
    [ [ WITH ] ( option [, ...] ) ]


ここでoptionは以下のいずれかです。

    FORMAT format_name
    OIDS [ boolean ]
    FREEZE [ boolean ]
    DELIMITER 'delimiter_character'
    NULL 'null_string'
    HEADER [ boolean ]
    QUOTE 'quote_character'
    ESCAPE 'escape_character'
    FORCE_QUOTE { ( column_name [, ...] ) | * }
    FORCE_NOT_NULL ( column_name [, ...] )
    FORCE_NULL ( column_name [, ...] )
    ENCODING 'encoding_name'

"delimiter as" の書き方は互換性の項目に「9.0より前に使用されていた」として書かれていますが11.5の正式な構文にはないため、どちらかと言えば「\copy sample to sample.txt delimiter as ','」の選択肢を誤りにすべきではないでしょうか。

スタッフからの返信

s staff

2023/04/19 15:23

alf58 さん ご指摘の点を修正いたしました。 ご報告、誠にありがとうございました。

この投稿に対して返信しませんか?