-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport2firebase.py
63 lines (49 loc) · 1.59 KB
/
import2firebase.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# coding: UTF-8
import os
from os.path import join, dirname
from dotenv import load_dotenv
import json
import glob
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
import ulid
# 環境変数読み込み
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
# RealtimeDatabaseのURL
DATABASE_URL = os.environ.get('DATABASE_URL')
# 書き込み権限認証コード
UID = os.environ.get('UID')
# ドキュメント名
DATABASE_DOC = os.environ.get('DATABASE_DOC')
# データベース接続認証コード類
cred = credentials.Certificate('./serviceAccountKey.json')
# データベース接続
firebase_admin.initialize_app(cred, {
'databaseURL': DATABASE_URL,
'databaseAuthVariableOverride': {
'uid': UID
}
})
# ドキュメント名の指定(存在しない場合作成される)
ref = db.reference(DATABASE_DOC)
def main():
# outputディレクトリ配下のjsonファイルを順番に読み込みデータベースに投入する
for json_file_name in listup_files('./output/*'):
with open(json_file_name, 'r', encoding='utf-8') as f:
print(f)
dict_data = dict()
for data in json.load(f):
dict_data[str(ulid.new())] = data
print(data)
import_to_db(dict_data)
# 相対パスでCSVファイル一覧を取得
def listup_files(path):
return sorted(glob.glob(path))
# RealtimeDatabaseへのデータ投入処理
def import_to_db(json_data):
## add data to database
ref.set(json_data)
if __name__ == "__main__":
main()