Postgresqlの上の見出しをCSVとしてテーブルをエクスポートする方法?
-
13-09-2019 - |
質問
私は、コマンドラインを介してCSVファイルへの見出しでPostgreSQLのテーブルをエクスポートしようとしている、しかし私はそれを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
末尾にセミコロン。
だけでなく、テーブル名の、あなただけ選択した列のデータを取得するためのクエリを書くことができます。
COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
管理者権限を持つ
\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
私は、コマンドラインからクエリを実行できることがわかります。
psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv
この作品
psql dbname -F , --no-align -c "SELECT * FROM TABLE"
私が使用したバージョン9.5の場合、それはこのようになります:
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
このソリューションは、\copy
を使用して私のために働きました。
psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
相続人は、私はそれがHerokuのPGデータベースにpgsl connnectを用いた電力シェルを作業得た方法:
私が最初にこのようUTF8にクライアントの符号化方式を変更する必要がありました:\encoding UTF8
次に、このCSVファイルにデータをダンプします:
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
私はCSVファイルを好きではないので、私は、私は通常、TSVファイルを使用して、区切り文字として〜を使用し、それは私が区切り文字として「\ T」を追加できなくなるので、私は強いの〜使用しました>そのAほとんど使用されませんのでcharaceter。
コピー(anysqlクエリdatawanttoexport)
このUを使用すると、データをエクスポートすることができます。
私はこの回答を投稿しています。私は適切な権限を持っていなかったので、私は、Postgresの内からCOPY
を使用することができませんでした。だから私は、「エクスポートグリッド行」を選択し、UTF-8として出力を保存します。
@Brianによって与えられたpsql
バージョンも異なる理由で、私のために動作しませんでした。それが機能しなかった理由は明らかに、Windowsのコマンドプロンプトが(私はWindowsを使用していた)、独自のエンコーディングで周りのおせっかいたということです。私はこのエラーを取得保管ます:
ERROR:エンコーディングのバイトシーケンス0x81と "WIN1252" との文字が "UTF8" をコードするには同等のを持っていません。
私が使用して終了ソリューションは、CSVファイルを読み込み、直接私のPostgresのテーブルへの挿入文を発行した短いJDBCスクリプト(Javaの)書くことでした。これは働いたが、コマンドプロンプトはまた、エンコーディングを変更されていない働いていると思います。