0

我正在尝试将 pandasto_sql用于 Teradata 数据库中的现有表,但出现此 QVCI 错误。经过一些在线研究,我将我的 ODBC 驱动程序升级到 17.00,但我仍然得到同样的错误。

现有表:

在此处输入图像描述

我在用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, schema='DB', if_exists='replace', 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作为大多数列的数据类型返回

在此处输入图像描述

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

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

问题:

  1. 直接为 Teradata 启用 QVCI 的语法是什么?
  2. 有没有办法将 CLOB 转换为 DATE?如何?
  3. 为什么if_exists='replace'依赖 QVCI 而不是if_exists='append'

谢谢!

4

0 回答 0