def create_abstract_insert(table_name, row_json, return_field=None):
    """Create an abstracted raw insert psql statement for inserting a single
    row of data

    :param table_name: String of a table_name
    :param row_json: dictionary of ingestion data
    :param return_field: String of the column name to RETURNING in statement
    :return: String of an insert statement
    """
    columns = []

    for key, value in row_json.items():
        if key in columns:
            continue
        else:
            columns.append(key)

    values = [':' + item for item in columns]

    values = ', '.join(map(str, values))

    list_columns = ', '.join(map(str, columns))

    if return_field is not None:
        statement = 'INSERT INTO ' + str(table_name) + '(' + list_columns + ')' \
            + ' VALUES (' + values + ') RETURNING ' + str(return_field)
    else:
        statement = 'INSERT INTO ' + str(table_name) + '(' + list_columns + ')' \
                    + ' VALUES (' + values + ')'

    return statement