Pandas не добавляет двойные кавычки в оператор вставки, вызывая проблемы в OraclePython

Программы на Python
Ответить
Anonymous
 Pandas не добавляет двойные кавычки в оператор вставки, вызывая проблемы в Oracle

Сообщение Anonymous »

Я читаю файл csv, который выглядит следующим образом:

Код: Выделить всё

"id_field","last_updated_date"
"123456",2021-08-07 16:26:45.299
И создание кадра данных с использованием:

Код: Выделить всё

df = pd.read_csv(file_path)
Я получаю метаданные о столбцах таблицы и использую их для создания карты типов данных, которую буду использовать при записи в таблицу базы данных Oracle

Код: Выделить всё

metadata = MetaData()
table = Table(
quoted_name(table_name, True),
metadata,
schema=quoted_name(self.schema, True),
autoload_with=self.engine
)

dtype_map = {}
for col in table.columns:
col_name = col.name
col_type = col.type
dtype_map[col_name] = col_type
Затем я пытаюсь записать данные в таблицу Oracle, используя:

Код: Выделить всё

df.to_sql(
name=quoted_name(table_name, True),
con=self.engine,
schema=quoted_name(self.schema, True),
if_exists=if_exists,
index=False,
dtype=dtype_map,
)
где self.engine — это механизм sqlalchemy.
Но я получаю следующую ошибку от Oracle: '(oracledb.Exceptions.DatabaseError) ORA-00904: "LAST_UPDATED_DATE": неверный идентификатор\nСправка: https://docs.oracle.com/error-help/db/ora-00904/'
Я думаю, это потому, что, когда to_sql генерирует операторы вставки, он делает это без кавычек имен столбцов.

Код: Выделить всё

'INSERT INTO "my_schema"."my_table" (id_field, last_updated_date) VALUES (:id_field, :last_updated_date)'
и поскольку имена столбцов в oracle написаны строчными буквами, он жалуется. Вот моя таблица DDL

Код: Выделить всё

CREATE TABLE "my_schema"."my_table"
(    "id_field" VARCHAR2(50 CHAR),
"last_updated_date" TIMESTAMP (6)
)
TABLESPACE "USERS" ;
Можно ли заставить оператор вставки сохранять регистр столбцов, заключая имена столбцов в кавычки.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-oracle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»