def execute(self, cursor, state): partition = self.partition(state) datapackage = self.datapackage(state) try: try: store_batch_insert(cursor, partition.table(), datapackage, state["modified"]) except Exception as exc: logging.debug("exception: {}".format(type(exc).__name__)) raise exc except NoSuchTable: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CreatePartition(self.partition, trend_names, data_types) return insert_before(fix) except NoSuchColumnError: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CheckColumnsExist(self.partition, trend_names, data_types) return insert_before(fix) except UniqueViolation: fix = Update(self.partition, self.datapackage) return replace(fix) except DataTypeMismatch: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CheckColumnTypes(self.partition, trend_names, data_types) return insert_before(fix)
def execute(self, cursor, state): datapackage = self.datapackage(state) try: self.attributestore.store_batch(cursor, datapackage) except psycopg2.DataError as exc: if exc.pgcode == psycopg2.errorcodes.BAD_COPY_FILE_FORMAT: attributes = datapackage.deduce_attributes() self.attributestore.update_attributes(attributes) fix = CheckAttributesExist(self.attributestore) return insert_before(fix) else: raise except DataTypeMismatch: attributes = datapackage.deduce_attributes() self.attributestore.update_attributes(attributes) fix = CheckAttributeTypes(self.attributestore) return insert_before(fix) except (NoSuchColumnError, NoSuchAttributeError) as exc: attributes = datapackage.deduce_attributes() self.attributestore.update_attributes(attributes) fix = CheckAttributesExist(self.attributestore) return insert_before(fix)
def execute(self, cursor, state): partition = self.partition(state) datapackage = self.datapackage(state) try: store_copy_from(cursor, partition.table(), datapackage, state["modified"]) except NoCopyInProgress: return no_op except NoSuchTable: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CreatePartition(self.partition, trend_names, data_types) return insert_before(fix) except NoSuchColumnError: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CheckColumnsExist(self.partition, trend_names, data_types) return insert_before(fix) except UniqueViolation: fix = Update(self.partition, self.datapackage) return replace(fix) except DataTypeMismatch: data_types = compose(DataPackage.deduce_data_types, self.datapackage) trend_names = compose(attrgetter("trend_names"), self.datapackage) fix = CheckColumnTypes(self.partition, trend_names, data_types) return insert_before(fix)