code: def run(self):
          
          if not (self.table):
              raise Exception("table need to be specified")
  
          path = self.s3_load_path()
          output = self.output()
          connection = output.connect()
          cursor = connection.cursor()
  
          self.init_copy(connection)
          self.copy(cursor, path)
          self.post_copy(cursor)
  
          if self.enable_metadata_columns:
              self.post_copy_metacolumns(cursor)
  
          # update marker table
          output.touch(connection)
          connection.commit()
  
          # commit and clean up
          connection.close()
docs: If the target table doesn't exist, self.create_table
          will be called to attempt to create the table.