Stellen Sie sich Folgendes vor: Kontrollpunkte unterscheiden sich je nach Vertragsstatus, so dass es einfach ist.
Das Trennzeichen ist ",". Gelegentlich gibt es CSV-Dateien, die nicht den Regeln entsprechen. Seien Sie also bitte vorsichtig.
Diesmal ist es eine einfache Konfiguration. Ich denke an Unique als Primärschlüssel, und es gibt keine Duplizierung.
DB-Konfiguration
unique ---------- item1
| | a : 1
| | b : 2
| ∟ c : 3
|
|--------- item1
| | a : 4
| | b : 5
| ∟ c : 6
|
∟ --------- item1
| a : 7
| b : 8
∟ c : 9
Ich mache folgendes.
sample.py
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import csv
#Daten lesen
def read_data(file_name):
csv_data = None
with open(file_name) as r:
reader =csv.reader(r)
csv_data = [row for row in reader]#In einer Variablen als zweidimensionales Array gespeichert
print('read end')
return csv_data
#Firebase-Initialisierungsprozess
def firebase_init(api_key):
api_key = credentials.Certificate(api_key)
#Es scheint, dass der vorherige Initialisierungsstatus erhalten bleibt. Löschen Sie daher zuerst den vorherigen Initialisierungsstatus
if(len(firebase_admin._apps)):
firebase_admin.delete_app(firebase_admin.get_app())
firebase_admin.initialize_app(api_key)
print("init end")
#Hauptverarbeitung / Datenregistrierung
def exe(data):
db = firestore.client()#Firestore-Client-Variable
header = data[0]#Header abrufen
doc_base = db.collection(header[0])#Stellen Sie einen einzigartigen Ort ein
print("proc start")
for i in range(1, len(data)):#Da die Daten aus der zweiten Zeile stammen, ab 1
doc_ref = doc_base.document(data[i][0])# a,b,Stellen Sie auf c
buf = {}#Puffer
for j in range(1, len(data[i])):
buf[header[j]] = data[i][j]
doc_ref.set(buf) #Im Firestore speichern
print("poc end")
def main():
file_name = "CSV-Dateiname"
api_key = r'api_key'
#Datei lesen
data = read_data(file_name)
#Firebase-Initialisierung
firebase_init(api_key)
#Hauptverarbeitung
exe(data)
if __name__=="__main__":
main()
Diesmal handelt es sich um eine Stapelregistrierung in einem sauberen Zustand, aber ich denke, dass es besser ist, unterwegs gemeinsam Daten vom Firestore zu erfassen, den Unterschied zu überprüfen und auf den Firestore zu aktualisieren. Ist die Gebühr nicht reduziert, da die Anzahl der API-Anrufe reduziert ist? Ich habe keine Probeberechnung durchgeführt.
Recommended Posts