Не могу вставить данные из csv-файла с датой в формате 'DD-MM-YYYY' в Oracle

Мой CSV-файл выглядит так (в данном случае дата в формате '05-06-2020')

TITLE,ISBN13,NUM_PAGES,PUBLICATION_DATE,COVER,DESCRIPTION,AMOUNT,PRICE
The Midnight Chronicles,9833880317949,228,05-06-2020,cover,A thrilling fantasy novel set in a world where darkness reigns and only a chosen few can bring back the light.,75,23.62

Я заполняю свои таблицы с помощью этого python-скрипта:

def append_csv(cursor, table_name, csv_file):
    try:
        with open(csv_file) as f:
            reader = csv.reader(f, delimiter=',', quotechar='"')
            i = -1
            for row in reader:
                if i == -1:
                    field_list = ','.join(row)
                    i += 1
                    continue
                value_list = ["'%s'" % r for r in row]
                value_list = ','.join(value_list)
                try:
                    print("insert into %s (%s) values(%s)" % (table_name, field_list, value_list))
                    cursor.execute("insert into %s (%s) values(%s)" % (table_name, field_list, value_list))
                    i += 1
                except cx_Oracle.Error as error:
                    print("Cannot insert value: %s" % value_list)
                    print("Error:", error)
    except Exception as e:
        print("Cannot insert data to table:", e)

Но получаю данную ошибку:

insert into BOOK (TITLE, ISBN13, NUM_PAGES, PUBLICATION_DATE, COVER, DESCRIPTION, AMOUNT, PRICE) values ('The Midnight Chronicles','9833880317949','228','05-06-2020','cover','A thrilling fantasy novel set in a world where darkness reigns and only a chosen few can bring back the light.','75','23.62')

Cannot insert value: 'The Midnight Chronicles','9833880317949','228','05-06-2020','cover','A thrilling fantasy novel set in a world where darkness reigns and only a 
        chosen few can bring back the light.','75','23.62'
        Error: ORA-01843: not a valid month

Пожалуйста помогите.

Пробовала изменить создание таблицы:

CREATE TABLE book (
    book_id          INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    title            VARCHAR2(255) NOT NULL,
    isbn13           VARCHAR2(13),
    num_pages        INTEGER NOT NULL,
    publication_date DATE NOT NULL,
    cover            VARCHAR2(255),
    description      VARCHAR2(1020) NOT NULL,
    amount           INTEGER NOT NULL,
    price            NUMBER(6, 2) NOT NULL,
    CONSTRAINT CHK_DateFormat CHECK (publication_date = TO_DATE(publication_date, 'DD-MM-YYYY'))
);

Но это тоже не дало результатов. Меняла местами дни и годы, тоже не работает.


Ответы (1 шт):

Автор решения: EkaterinaSS

Я бы колонку publication_date создала как varchar2, а на следующем шаге распознала и перевела в дату, мало-ли изменится формат передаваемых дат в csv-файле, такое очень часто бывает.

→ Ссылка