1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

リモート環境のpostgresDBからcsvを出力してローカルに持ってきたい

Posted at

概要

リモート環境にsshで接続して、DBからcsvをローカルに落としたい場面が多々あったので備忘録として残しておこうと思いました。

環境

DBエンジン: PostgreSQL11.6
ローカルクライアント: macOS Big Sur
リモートサーバー: Amazon Linux 2

csvを出力

まずはssh接続します。

$ ssh -i [秘密鍵ファイル] [リモートユーザー]@[リモートIPアドレス(ホスト名)]

今回は指定したSQLの出力結果をcsvに出力したかったのでその方法を2通りほど記述します。
テーブルを丸ごとcsv出力したい場合はCOPYコマンドを使ってください。

①psqlコマンドでcsv出力する

# -A: 位置揃えなし
# -F: 区切り文字指定
$ psql -U [DBユーザ名] -h [DBホスト名] -d [DB名] -c "SQL文" -F ',' -A > example.csv
# csvができているか確認
$ less example.csv

csvが確認できたら接続を閉じます

$ exit

②DB接続してからcsv出力する

一度DBに接続します

$ psql -U [DBユーザ名] -h [DBホスト名] -d [DB名]

以下のコマンドを叩いていきます

=> \o example.csv
=> \a
=> \f ','
=> [SQL文]
=> \o
# 接続終了
=> \q
# csvができているか確認
$ less example.csv

csvが確認できたら接続を閉じます

$ exit

scpコマンドでローカルに持ってくる

scpコマンドとは?

SSHプロトコルを使用したホスト間のファイル転送ができます。
基本的には以下の構文となります。

$ scp [オプション] コピー元 コピー先 

実行

今回はDownloadsディレクトリに落とします

$ scp -i [秘密鍵ファイル] [リモートユーザ名]@[リモートIPアドレス(ホスト名)]:~/example.csv  ~/Downloads
# csvを確認
$ less ~/Downloads/example.csv

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?