私はpsqlの\dt
を使ってデータベース内のすべてのテーブルを一覧表示していますが、結果を保存する必要があります。
Psqlコマンドの結果をファイルにエクスポートするための構文は何ですか?
Psqlの助けから(\?
):
\ o [FILE]すべての問い合わせ結果をファイルまたはパイプに送る
一連のコマンドは次のようになります。
[wist@scifres ~]$ psql db
Welcome to psql 8.3.6, the PostgreSQL interactive terminal
db=>\o out.txt
db=>\dt
db=>\q
[wist@scifres ~]$
Psqlの\o
コマンドは、jhwistによって既に記述されています。
別の方法は、COPY TO
コマンドを使用してサーバー上のファイルに直接書き込むことです。これには、psqlの表形式ではなく、選択しやすい解析しやすい形式でダンプされるという利点があります。 COPY FROM
を使って別のテーブル/データベースにインポートするのもとても簡単です。
NB!これにはスーパーユーザー特権が必要で、サーバー上のファイルに書き込みます。
例:COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
';'でCSVファイルを作成しますフィールド区切り文字として。
いつものように 詳細はドキュメントを参照
postgresコマンドである\copy
はどのユーザにも使えます。それが\ dtに対して機能するかどうかわからないが、一般的な構文は以下のリンクから再現される Postgres SQLコピー構文
\copy (select * from tempTable limit 100) to 'filenameinquotes' with header delimiter as ','
上記は、選択クエリの出力をcsvファイルとして提供されたファイル名で保存します。
編集:
私のpsqlサーバでは、以下のコマンドが動作しますこれは古いバージョンv8.5です
copy (select * from table1) to 'full_path_filename' csv header;
次のエラーが発生した場合はufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
このように実行することができます。
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
このコマンドはテーブル全体をcsvとして保存するために使用されます。
このための内部psqlコマンドがいくつかあると思いますが、 til-linux-ng パッケージからscript
コマンドを実行することもできます。
スクリプトはあなたの端末に印刷されたすべてのもののTypeScriptを作成します。