見出し画像

herokuのデータをローカルのpgadminでリストア

テスト環境のデータを、ローカルで使いたいんですよ…それだけなんすよ…

技術者さんのリストア記事(感謝


個人の感想

①heroku cli をつかってわざわざダウンロードめんどくさい
②dumpにしてダウンロードしたのに、リストアでエラーが出たorz(補足1)

個人の対応方法

※あくまで私の環境でうまくいっただけなので、真似して実施するかはご自身の責任で…。うまくいくことを祈ってます。

1. herokuのpg画面からダウンロードボタン押す


ここのダウンロードで、なんとかできないか…?

2. わかりやすいよう名前を付けて好きなところに保存

ダウンロードしてきたファイルは、半角英数で拡張子なしになっているので任意の名前を付ける
(私は英数だけで名前つけました)


3. pgadminで任意名のDBを作る



4. 対象DBを右クリックして、「リストア」を選択


5. ファイル名の「…」をクリックして、ダウンロードしてきたファイルを選択

このとき、「形式」を「すべてのファイル」にしないと、ダウンロードしたファイルは見えないので注意。

6. リストアオプションタブでオプション設定

所有者と権限を「保存しない→YES」に変更
※これを設定しないと、ユーザが云々みたいなエラーが起きてた。メモしてないけど。

7. リストアボタンクリック→終了まで待機


こうなれば成功
いちおう、データ見たり、いくつかSQL試してみて、動きそうだったのでOKとします。

補足1:pg_restoreのエラーについて

pg_restore: [アーカイバ] ファイルヘッダ内のバージョン(x.xx)はサポートされていません

pg_restore: [archiver] unsupported version (x.xx) in file header

というエラーが出た。

おそらくherouk helpに載っている

使用している pg_restore​ のバージョンが最新であり、エクスポートされたデータベースのバージョンと互換性があることを確認してください。

https://devcenter.heroku.com/ja/articles/heroku-postgres-import-export#restore-to-local-database

と思われる。
こういう記事もあったし。

>pg_restore --version
pg_restore (PostgreSQL) 11.9

pg_restoreは11、herokuで使っていたバージョンは12。
ただし、ローカルにはもう12があるんだよ…どうすればいいんだってばよ!?

ということで、対策諦めた。(未来の担当者すみません)
pg_restoreしか手立てがなかったら対策を続けた。

未来の担当者へ:
明示的に指示すればいい、という記事もあったし、pgadminで実行しているコマンドもこれっぽかったです。

xxxxx\PostgreSQL\12\bin\pg_restore.exe --host "localhost" --port "5433" --username "postgres" --no-password --dbname "test-restore" --no-owner --no-privileges --verbose "(ファイルのある場所)"





この記事が気に入ったらサポートをしてみませんか?