【发布时间】:2026-01-08 17:15:01
【问题描述】:
问题
我有一个 pandas 数据框,我正在尝试将 pd.df.to_sql() 函数用于 Oracle 数据库。我的 Oracle 数据库是 19.3c。看起来很容易对吧?为什么它不起作用??
我在其他一些 * 帖子中看到我应该使用 sqlalchemy 数据类型。好的。链接:
- Pandas and SQL Alchemy: Specify Column Data Types
- Pandas to_sql changing datatype in database table
- https://docs.sqlalchemy.org/en/14/dialects/oracle.html#oracle-data-types
from sqlalchemy.types import Integer, String
from sqlalchemy.dialects.oracle import NUMBER, VARCHAR2, DATE
oracle_dtypes = {
'id' : NUMBER(38,0),
'counts' : Integer,
'name' : VARCHAR2(50),
'swear_words' : String(9999)
'date' : DATE()
}
df_upload.to_sql(
"oracle_table",
db.engine,
schema="SA_COVID",
if_exists="replace",
index=False
dtype=oracle_dtypes
)
它将随机组转换为CLOB 或其他一些随机数据类型永远不会失败。我该怎么办?
我尝试过的事情
我试过了,还是不行……
- 先整理(从python向数据库发送SQL语句)表然后
if_exist="append" - 使用
if_exist="replace" - 仅使用
sqlalchemy数据类型的 Oracle 特定方言 - 仅使用通用
sqlalchmey数据类型 - 同时使用这两种方法我很沮丧
也许这是 Oracle 特定的问题?
我没有尝试过的事情:
我没有尝试过的事情:
- 删除表并在插入前重新创建它
-
to_sqladhoc 和发送一系列的一些ALTER TABLE tbl_name MODIFY col_name
相关链接:
【问题讨论】:
-
你遇到了什么错误?
-
是 sql alchemy 为您创建表,还是您插入到现有表中。如果后者会给你一个错误吗?你能从Oracle添加create table语句吗?
标签: python pandas oracle sqlalchemy cx-oracle