Heroku Postgres(DB)をローカルから操作する方法
はじめに
PaaSシステムのHerokuを利用しているのですが、DBを使用する際に、直接SQLを手動で実行したいケースが発生しました。 (正式にはPostgreSQL をチューニングしたHeroku Postgresを利用しています) https://www.heroku.com/postgres
■ 手順
STEP1. Heroku CLIを導入 STEP2. DB接続情報の取得 STEP3. DB接続
STEP1. Heroku CLIを導入
Heroku CLIとは、さまざまなオペレーティングシステムのコマンドライン/シェルからHerokuアプリケーションを作成および管理するためのツールです。
今回はHeroku CLIを利用してHeroku Postgresを操作するのでHeroku CLIを導入していない場合は導入しましょう。
導入方法は下記参照 https://devcenter.heroku.com/articles/heroku-cli
僕のバージョンは以下になります。
~ ❯❯❯ heroku --version [~] heroku/7.33.3 darwin-x64 node-v11.14.0
STEP2. DB接続情報の取得
下記コマンドを実行し、DBへの接続情報を取得する。
heroku pg:credentials:url
で、接続先のDB接続情報、ホスト名、ポートなどが取得できるので利用します。
$ heroku pg:credentials:url --app [アプリケーション名] Connection information for default credential. Connection info string: "dbname=xxxxxx host=ec2-xxxxxx.amazonaws.com port=5432 user=xxxxx password=xxxxxx sslmode=require" Connection URL: postgres://ユーザ名:パスワード@ホスト名:5432/データベース名
STEP3. DB接続
DBへ接続するにあたり、 PostgreSQL がローカル環境にインストールされていることが必須です。 もしインストールしていない場合はインストールします。
brew install postgresql
僕のバージョンは以下になります。
~/D/w/heroku ❯❯❯ postgres --version [~/Desktop/workspac/herokura]+[feature/csv_output] postgres (PostgreSQL) 11.5
では、DB接続しましょう。
heroku pg:psql -a [アプリケーション名]
接続に成功すると以下のようになります。
~/D/w/heroku ❯❯❯ heroku pg:psql -a [APP-NAME] [~/Desktop/workspac/herokura]+[fix/search_account_function] --> Connecting to postgresql-XXXXXX-XXXXXX psql (11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. [APP-NAME] ::DATABASE=>
実際にSQLを叩いて必要な情報が取得できるか確認してみましょう。
herok-staging::DATABASE=> select count(*) from salesforce.account; count ------- 5293 (1 row)
SQLが叩かれて数字が取れていますね。これで成功です。
参考
Heroku Postgresをローカル環境から手動で操作する方法について https://sysrigar.com/2019/01/20/heroku-postgres%E3%82%92%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E7%92%B0%E5%A2%83%E3%81%8B%E3%82%89%E6%89%8B%E5%8B%95%E3%81%A7%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4/