CSV-файл:
Код: Выделить всё
"id_field","last_updated_date"
"123456",2021-08-07 16:26:45.299
Код: Выделить всё
CREATE USER "my_schema" IDENTIFIED BY "Password123";
GRANT ALL PRIVILEGES TO "my_schema";
CREATE TABLE "my_schema"."my_table" (
"id_field" VARCHAR2(50 CHAR),
"last_updated_date" TIMESTAMP (6)
);
Код: Выделить всё
import pandas as pd
from sqlalchemy import create_engine, inspect, quoted_name
from sqlalchemy.exc import SQLAlchemyError
csv_file_path = "./my_table.csv"
user_name = "my_schema"
table_name = "my_table"
database_url = f"oracle+oracledb://\"{user_name}\":Password123@**********:1521?service_name=*******"
if __name__ == "__main__":
try :
engine = create_engine(database_url, echo="debug")
inspector = inspect(engine)
df = pd.read_csv(csv_file_path)
columns = inspector.get_columns(quoted_name(table_name, True), quoted_name(user_name, True))
# Build dtype map
dtype_map = {}
for col in columns:
col_name = col["name"]
col_type = col["type"]
dtype_map[col_name] = col_type
df.to_sql(
name=quoted_name(table_name, True),
con=engine,
schema=quoted_name(user_name, True),
if_exists="append",
index=False,
dtype=dtype_map,
)
except SQLAlchemyError as e:
raise RuntimeError(f"SQLAlchemy error while loading CSV to '{table_name}': {e}")
except Exception as e:
raise RuntimeError(f"Unexpected error while loading CSV to '{table_name}': {e}")
Он жалуется, потому что to_sql генерирует операторы вставки без кавычек имен столбцов
Код: Выделить всё
INSERT INTO "my_schema"."my_table" (id_field, last_updated_date) VALUES (:id_field, :last_updated_date)Как мне заставить оператор вставки сохранять регистр столбцов, заключая имена столбцов в кавычки?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... olumn-name
Мобильная версия