def load_data(self, resource_name, timestamp, data): """Load data into a snapshot table. Args: resource_name (str): String of the resource name. timestamp (str): String of timestamp, formatted as YYYYMMDDTHHMMSSZ. data (iterable): An iterable or a list of data to be uploaded. Raises: MySQLError: When an error has occured while executing the query. """ with csv_writer.write_csv(resource_name, data) as csv_file: try: snapshot_table_name = self._create_snapshot_table_name( resource_name, timestamp) load_data_sql = load_data_sql_provider.provide_load_data_sql( resource_name, csv_file.name, snapshot_table_name) LOGGER.debug('SQL: %s', load_data_sql) cursor = self.conn.cursor() cursor.execute(load_data_sql) self.conn.commit() # TODO: Return the snapshot table name so that it can be tracked # in the main snapshot table. except (DataError, IntegrityError, InternalError, NotSupportedError, OperationalError, ProgrammingError) as e: raise MySQLError(resource_name, e)
def load_data(self, resource_name, timestamp, data): """Load data into a snapshot table. Args: resource_name: String of the resource name. timestamp: String of timestamp, formatted as YYYYMMDDTHHMMSSZ. data: An iterable or a list of data to be uploaded. Returns: None Raises: MySQLError: An error with MySQL has occurred. """ try: snapshot_table_name = self._create_snapshot_table( resource_name, timestamp) csv_filename = csv_writer.write_csv(resource_name, data) load_data_sql = load_data_sql_provider.provide_load_data_sql( resource_name, csv_filename, snapshot_table_name) cursor = self.conn.cursor() cursor.execute(load_data_sql) self.conn.commit() # TODO: Return the snapshot table name so that it can be tracked # in the main snapshot table. except (DataError, IntegrityError, InternalError, NotSupportedError, OperationalError, ProgrammingError) as e: raise MySQLError(resource_name, e)