From 3811430df45246444e4a88e00a9e57aad6396cc3 Mon Sep 17 00:00:00 2001 From: Paul M Furley Date: Fri, 11 Apr 2014 16:21:39 +0100 Subject: [PATCH] Script to convert our JSON to CSV It can export flat data, like you get out of a raw query to backdrop (no group_by, filter arguments etc) --- tools/convert-to-csv.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 tools/convert-to-csv.py diff --git a/tools/convert-to-csv.py b/tools/convert-to-csv.py new file mode 100755 index 00000000..1ab7ee46 --- /dev/null +++ b/tools/convert-to-csv.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# encoding: utf-8 + +""" +Rough and ready conversion script to turn our JSON output into CSV. + +Note that this only works on "flat" data like, such as what you get from a raw +query in backdrop. It can't handle nesting, like when you've used a group_by +query. +""" + +import json +import csv +import sys + + +def main(filename): + with open(filename, 'r') as f, open('out.csv', 'w') as g: + data = json.loads(f.read()) + + field_names = set() + for row in data['data']: + field_names.update(set(row.keys())) + + csv_writer = csv.DictWriter( + g, + fieldnames=sorted(field_names), + delimiter=',') + csv_writer.writeheader() + + for row in data['data']: + csv_writer.writerow(row) + +if __name__ == '__main__': + if len(sys.argv) == 2: + main(sys.argv[1]) + else: + print("Usage: {} ".format(sys.argv[0])) + sys.exit(2)