コマンドラインからヘッダー付きのPostgreSQLテーブルをCSVファイルにエクスポートしようとしていますが、ヘッダーなしでCSVファイルにエクスポートできます。
私のコードは次のようになります。
COPY products_273 to '/tmp/products_199.csv' delimiters',';
コマンドラインからヘッダー付きのPostgreSQLテーブルをCSVファイルにエクスポートしようとしていますが、ヘッダーなしでCSVファイルにエクスポートできます。
私のコードは次のようになります。
COPY products_273 to '/tmp/products_199.csv' delimiters',';
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
マニュアルに記載されているように。
psql コマンドラインから:
\COPY my_table TO 'filename' CSV HEADER
末尾にセミコロンはありません。
これは機能します
psql dbname -F , --no-align -c "SELECT * FROM TABLE"
最も簡単な方法 (を使用psql
) は、--csv
フラグを使用することです。
psql --csv -c "SELECT * FROM products_273" > '/tmp/products_199.csv'
Heroku PGデータベースへのpgsl接続を使用して、Power Shellを機能させる方法を次に示します。
最初に、次のようにクライアントのエンコーディングを utf8 に変更する必要がありました。\encoding UTF8
次に、データを次の CSV ファイルにダンプしました。
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
私は CSV ファイルが好きではないので区切り文字として ~ を使用しました。通常は TSV ファイルを使用しますが、区切り文字として '\t' を追加することはできません。
で、実行するpgAdmin
ときと同じようにクエリ ステートメントを強調表示してF5
を押しF9
ます。ファイル ブラウザが開き、CSV を保存する場所を選択できます。
Azure Data Studio を使用している場合、手順は次のとおりです: Azure Data Studio: Save As CSV。
これが普遍的な解決策ではないことはわかっていますが、ほとんどの場合、ファイルを手動で取得したいだけです。
ここに記載されている他の回答はどれも実際にはうまくいかなかったため、この回答を投稿しています。COPY
正しい権限がなかったため、Postgres 内から使用できませんでした。そこで、「グリッド行のエクスポート」を選択し、出力を UTF-8 として保存しました。
@Brian から提供されたpsql
バージョンも、別の理由で機能しませんでした。うまくいかなかった理由は、どうやら Windows のコマンド プロンプト (私は Windows を使用していた) が独自にエンコーディングをいじっていたようです。このエラーが発生し続けました:
エラー: エンコーディング "WIN1252" のバイト シーケンス 0x81 の文字は、エンコーディング "UTF8" に対応する文字がありません
私が最終的に使用した解決策は、CSV ファイルを読み取り、挿入ステートメントを Postgres テーブルに直接発行する短い JDBC スクリプト (Java) を作成することでした。これは機能しましたが、エンコーディングを変更していなければ、コマンド プロンプトも機能していたはずです。