def METHOD_NAME(
    self,
    records: List[Dict],
    schema: Dict,
    schema_name: str,
    table_name: str,
    database_name: str = None,
    unique_conflict_method: str = None,
    unique_constraints: List[str] = None,
) -> List[str]:
    columns = list(schema['properties'].keys())
    insert_columns, insert_values = build_insert_command(
        column_type_mapping=column_type_mapping(
            schema,
            convert_column_type,
            lambda item_type_converted: 'LONGTEXT',
        ),
        columns=columns,
        records=records,
        convert_column_to_type_func=convert_column_to_type,
        string_parse_func=lambda x, y: x.replace("'", "''").replace('\\', '\\\\')
        if COLUMN_TYPE_OBJECT == y['type'] else x,
    )
    insert_columns = ', '.join([self.clean_column_name(col) for col in insert_columns])
    insert_values = ', '.join(insert_values)
    insert_into = f'INTO {table_name} ({insert_columns})'
    commands_after = []
    if unique_constraints and unique_conflict_method:
        if UNIQUE_CONFLICT_METHOD_UPDATE == unique_conflict_method:
            columns_cleaned = [self.clean_column_name(col) for col in columns]
            update_command = [f'{col} = new.{col}' for col in columns_cleaned
                              if col != INTERNAL_COLUMN_CREATED_AT]
            commands_after += [
                'AS new',
                f"ON DUPLICATE KEY UPDATE {', '.join(update_command)}",
            ]
        else:
            insert_into = f'IGNORE {insert_into}'
    commands = [
        f'INSERT {insert_into}',
        f'VALUES {insert_values}',
    ] + commands_after
    return [
        '\n'.join(commands),
        # This will combine the count for number of rows inserted and number of rows updated.
        # For example, if it inserts 2 and updates 2, that will yield 4.
        'SELECT ROW_COUNT()',
    ]