何の記事ですか
色んな意味で初心者の私がflask + sqlite3でwebアプリ作りたい!ってやってたら、
「えっ、herokuってsqlite使えないんですか・・・」と絶望したので、
sqliteからherokuのpostgresqlにデータを移行する手順を書いてみる。
既存でいっぱいあるけど、初心者には難しかったです。はい。
このやり方なら、たぶん誰でもできる。はず。
sqliteからCSVに書き出す
sqlite3で作成したhoge.dbを、hoge.csvに出力。
import sqlite3
import pandas as pd
db = sqlite3.connect("hoge.db") #「hoge」を変更
df = pd.read_sql_query("SELECT*FROM table", db) #「table」を変更
db.close()
df.to_csv("hoge.csv", index=None)
herokuで空のappとpostgresqlを作る。
空のapp作る → postgresql作るの順。
こちらの記事を参考にさせていただきました。
●Heroku初心者がHello, Herokuをしてみる
https://qiita.com/Arashi/items/b2f2e01259238235e187
●いちばん簡単にPostgreSQLを使う ~HerokuPosgresに繋いでみよう
https://qiita.com/rzl5/items/09f61d308080bf801a8b
herokuで空のテーブルを作る
herokuのpostgresql側で空のテーブルを作る。
コマンドラインとか使っちゃう。コマンドラインって「ぽい」ですよね。ふふふ。
heroku pg:psql -a [APP NAME]
[APP NAME]::DATABASE=> create [TABLE NAME]
[APP NAME]::DATABASE-> (
[APP NAME]::DATABASE(> [COLMUN_NAME1] text,
[APP NAME]::DATABASE(> [COLMUN_NAME2] text,
[APP NAME]::DATABASE(> );
CSVを読み込む
こちらもコマンドラインで。「\copy」はメタコマンドというらしいです。
[APP NAME]::DATABASE=> \copy [TABLE NAME] from 'hoge.csv' CSV header;
できた!
ということで、この記事を書きながら、
「『コマンドライン』って使い方あってるかな・・・」
と調べるレベルの私でも、ローカルのsqlite3から、herokuのpostgresqlにデータ移行ができました。
herokuの公式ドキュメントだと、dumpファイルを作って、HTTPからアクセスできるところ(Amazon S3とかレンタルサーバーとか?)に置いたらできるよ、みたいな感じだったけど、Amazon S3に登録するのに若干の躊躇があり(たぶんまだ使いこなせない)、別のやり方を調べていたら2日くらいかけてしまった。
heroku schedulerとかで定期的にスクレイピングかけて、db保存したやつをなんやかんやするwebアプリを作りたいなぁ。