diff --git a/services/ingest-file/ingestors/support/table.py b/services/ingest-file/ingestors/support/table.py index 64529015ca..0975c131cb 100644 --- a/services/ingest-file/ingestors/support/table.py +++ b/services/ingest-file/ingestors/support/table.py @@ -9,11 +9,17 @@ class TableSupport(object): """Handle creating rows from an ingestor.""" + def set_column_headers(self, table, headers): + table.set('columns', [headers]) + def emit_row_dicts(self, table, rows): csv_path = Path(self.manager.work_path).joinpath(table.id + ".csv") with open(csv_path, 'w', encoding='utf-8') as fp: csv_writer = csv.writer(fp) + headers = [] for index, row in enumerate(rows, 1): + if not headers: + headers = list(row.keys()) values = list(row.values()) csv_writer.writerow(values) entity = self.manager.make_entity('Row') @@ -23,6 +29,7 @@ def emit_row_dicts(self, table, rows): entity.set('table', table) self.manager.emit_entity(entity) self.manager.emit_text_fragment(table, values, entity.id) + self.set_column_headers(table, headers) csv_hash = self.manager.archive_store(csv_path) table.set("csvHash", csv_hash) @@ -30,7 +37,10 @@ def emit_row_tuples(self, table, rows): csv_path = Path(self.manager.work_path).joinpath(table.id + ".csv") with open(csv_path, 'w', encoding='utf-8') as fp: csv_writer = csv.writer(fp) + headers = [] for index, row in enumerate(rows, 1): + if not headers: + headers = ["Column %s" % i for i in range(1, len(row) + 1)] row = list(row) csv_writer.writerow(row) entity = self.manager.make_entity('Row') @@ -40,5 +50,6 @@ def emit_row_tuples(self, table, rows): entity.add('table', table) self.manager.emit_entity(entity) self.manager.emit_text_fragment(table, row, entity.id) + self.set_column_headers(table, headers) csv_hash = self.manager.archive_store(csv_path) table.set("csvHash", csv_hash)