Я пытаюсь написать несколько строк файла csv (или pandas dataframe) в моей базе данных Oracle, используя python (cx_Oracle).
Я копирую строки dataframe/csv в список rows, который выглядит следующим образом:
``
[....,
['977', '980', '40', '152.9', '2011-08-22'],
['978', '981', '41', '155.5', '2011-08-22'],
['979', '982', '42', '149.3', '2011-08-22'],
['980', '983', '43', '153.5', '2011-08-22'],
['981', '984', '44', '149.5', '2011-08-22'],
....]
``
Первый элемент разных строк является первичным ключом. Таблица в базе данных имеет такую же структуру. Я пытаюсь скопировать строки в таблице следующим образом:
``
cursor.prepare('insert into REGULAR values (:1, :2, :3, :4)')
cursor.executemany(None, rows)
connection.commit()
``
В результате я всегда получаю эту ошибку:
DatabaseError: ORA-01036: illegal variable name/number
Может ли кто-нибудь помочь. Спасибо!
PS: Я уже находил темы с вопросами по этой ошибке, но это не помогло, так как ситуации совершенно разные.
@JohnHC Таблица содержит 4 данных. Первый элемент в списке rows — это индекс.
Независимо от того, является ли это индексом, он по-прежнему используется в качестве входных данных, поэтому у вас есть несоответствие между 5 значениями данных и 4 переменными связывания.
@ChristopherJones все равно выдает ошибку, даже если я пытаюсь использовать 5 переменных связывания. На этот раз это DatabaseError: ORA-00913, что означает Too many values inserted. Есть ли другие проблемы?
Сколько столбцов в таблице REGULAR? Каковы их типы? Я ожидаю, что у вас всего 4 столбца, и вы все еще пытаетесь вставить 5 значений. Я предлагаю вам начать с некоторых примеров, показанных в blogs.oracle.com/opal/…, и посмотреть, как работает executemany().






Должны ли быть 5 столбцов данных и только 4 столбца в таблице
regular?