【问题标题】:Pandas df.to_sql not working for redshiftPandas df.to_sql 不适用于红移
【发布时间】:2019-06-25 04:11:43
【问题描述】:
igers = create_engine('postgres://%s:%s@%s/ibdrs' %(igersUser, igersPwd, igersHost), encoding="utf-8")
df.to_sql('Table_Named_Something', igers, if_exists='replace', schema='Schema', index = False)

使用上面的代码我得到一个错误(psycopg2.ProgrammingError) Relation "Table_Named_Something" already exists

我认为 if_exists='replace' 应该删除并重新创建表;我错了吗?为什么这对红移不起作用?

【问题讨论】:

  • 不,我没有名为 table 的表。它有另一个名字,但数据很敏感,我必须对其进行清理以确保有人发生在它上面的可能性为 0。
  • 再一次,这不是表名。让我更改代码,这样你就可以摆脱困境。我已经验证了权限。
  • 我没有意识到我没有复制 igers 变量部分,对此感到抱歉。 Igers 是分配给 create_engine 的变量。除此之外,你不能拥有其余的,因为它是登录和数据库地址数据
  • 你确定你使用的是replace而不是append吗?仔细检查代码。类似的 Redshift/Pandas 帖子显示 append 出现问题:stackoverflow.com/q/54240688/1422451(几周前); stackoverflow.com/questions/51312684/…(几个月前)。但是 replace 没有问题(很多赞成票):stackoverflow.com/a/39709820/1422451(多年前)。
  • 是的,我很确定它说的是替换。不过很高兴知道附加。

标签: python-3.x pandas


【解决方案1】:

这听起来很奇怪,但我遇到了同样的问题,当我将表名更改为小写时,它就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2022-01-02
    • 2020-07-13
    • 2013-05-19
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多