Sqlalchemy Teradata ODBC 17.00 to_sql QVCI错误CAST CLOB类型转换为DATE

我正在尝试对Teradata数据库中的现有表使用熊猫to_sql,但出现此QVCI错误。经过一些在线研究之后,我将ODBC驱动程序升级到17.00,但是仍然遇到相同的错误。

现有表格:

Sqlalchemy Teradata ODBC 17.00 to_sql QVCI错误CAST CLOB类型转换为DATE

我正在使用sqlalchemy_teradata

这是代码: a_df.to_sql(name='TEST_LA_TEMP',con=engine,schema='DB',if_exists='replace',index=False)

然后我尝试指定类型,但出现相同的错误。

from sqlalchemy.types import INTEGER,VARCHAR,Date

a_df.head()
a_df.to_sql(name='TEST_LA_TEMP',con=engine_ldap,index=False,dtype={'id': INTEGER,'p_name': VARCHAR(20),'dept': VARCHAR(20),'update_date': Date})

错误:

DatabaseError: (teradata.api.DatabaseError) (9719,'[HY000] [Teradata][ODBC Teradata Driver][Teradata Database](-9719)QVCI feature is disabled.')
[SQL: SELECT * 
FROM dbc.ColumnsQV 
WHERE DatabaseName (NOT CASESPECIFIC) = CAST(? as VARCHAR(128)) (NOT CASESPECIFIC) AND TableName=?]
[parameters: ('DB','TEST_LA_TEMP')]

当我使用相同的代码导入到新的(不存在的)表中时,它可以正常工作,但是对于大多数列,它返回CLOB作为数据类型

Sqlalchemy Teradata ODBC 17.00 to_sql QVCI错误CAST CLOB类型转换为DATE

然后,我尝试将CLOB类型转换为正确的类型,但提示CLOBs can only be converted to CHAR TO VARCHAR缺少我的update_date列。

如果我改用if_exists='append',则可以使它工作,然后再次拖放并创建表。但我仍然想了解为什么以及如何解决这些错误。

问题:

  1. 直接为Teradata启用QVCI的语法是什么?
  2. 是否有办法将CAST CLOB设置为DATE?怎么样?
  3. 为什么if_exists='replace'依赖QVCI但不依赖if_exists='append'

谢谢!

iCMS 回答:Sqlalchemy Teradata ODBC 17.00 to_sql QVCI错误CAST CLOB类型转换为DATE

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1597895.html

大家都在问