Skip to content

Instantly share code, notes, and snippets.

@cbrannen9a
Created January 4, 2019 14:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cbrannen9a/7ab7c126e2cd9c4bcbe1beb6c6ec32c6 to your computer and use it in GitHub Desktop.
Save cbrannen9a/7ab7c126e2cd9c4bcbe1beb6c6ec32c6 to your computer and use it in GitHub Desktop.
Add data from csv to Firestore
import csv
import firebase_admin
import google.cloud
from firebase_admin import credentials, firestore
cred = credentials.Certificate("./ServiceAccountKey.json")
app = firebase_admin.initialize_app(cred)
store = firestore.client()
file_path = "CSV_FILE_PATH"
collection_name = "COLLECTION_TO_ADD_TO"
def batch_data(iterable, n=1):
l = len(iterable)
for ndx in range(0, l, n):
yield iterable[ndx:min(ndx + n, l)]
data = []
headers = []
with open(file_path) as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
for header in row:
headers.append(header)
line_count += 1
else:
obj = {}
for idx, item in enumerate(row):
obj[headers[idx]] = item
data.append(obj)
line_count += 1
print(f'Processed {line_count} lines.')
for batched_data in batch_data(data, 499):
batch = store.batch()
for data_item in batched_data:
doc_ref = store.collection(collection_name).document()
batch.set(doc_ref, data_item)
batch.commit()
print('Done')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment