Life is Like a Boat

忘備録や経済、投資、プログラミングに関するメモやtipsなど

VPS上にあるMongoDBからデータを抽出する

f:id:nerimplo:20190216140152j:plain Sakura VPSをかれこれ5年くらい使っています。いまのプランはメモリ1GでSSD30Gまであるのですが、ダウンロードやデータ数が膨らみduコマンドで使用量を調べると90%を超えるようになっていました。誰がこんなクソコード書いたんだよと思うくらいレガシー笑のコードもあります。vi使って直接バグ直したこともあったのでもう変更履歴とかわかんない、そんな使用状況です。

様々な要因を考慮してVPSで管理する必要なくなってきているので、今年から移行できるものをHeroku Postgresに移そうとしているところです。そのうちの一つがMongoDBです。

MongoDBはNoSQLに分類されるものの一つで、なぜ使っていたかというと当初は後からいろんなデータの項目が増えるだろうと想定していました。5年くらいデータ貯めてきて結局、項目増えなかったなというのが現実でして、実際のところリレーショナルDBで十分でした。

なので、今回の移行作業はMongoDB->CSV,JSON -> Postgresに投入(SQLAlchemey)という流れです。

同じような移行作業に直面している人がいるかわかりませんが、以下、MongoDBのドキュメントをCSV,JSONをエクスポートするまでの作業メモです。

SSHポートフォワーディング

VPS上のMongoDBにローカルPCからアクセスしたいので、そのための導線を作ります。

Terminalから ssh -L [Localのポート]:[VPSのIP]:[VPS上のMongoDBのポート] [VPSにSSHするユーザ名]@[VPSのIP] -p [SSHポート]

します。SSHポートフォワーディングというやつです。

MongoDB Compass

MongoDBはMongoDB CompassというUIからDBの操作ができるアプリを提供しています。IPOした会社だけあって使いやすさを考えてますわ。

これをダウンロードして接続先を設定します。Portの部分が32123となっていますが、Terminalで指定した[Localのポート]と同じで空いているポートならなんでもOKです。

f:id:nerimplo:20190216121344p:plain

Compass側の設定はこれだけです。簡単すぎてわろたレベル。

接続すると

f:id:nerimplo:20190216121609p:plain

が出てきます。あとはDB選んで操作したいコレクションを選んでUIからサクサク作業できます。JSONやCSVでのExportが可能です。アドホックなクエリも実行できますよ!

MongoDB: The Definitive Guide: Powerful and Scalable Data Storage

MongoDB: The Definitive Guide: Powerful and Scalable Data Storage