我正在尝试将 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'
,然后再次删除并创建表。但我仍然想了解为什么以及如何解决这些错误。
问题:
- 直接为 Teradata 启用 QVCI 的语法是什么?
- 有没有办法将 CLOB 转换为 DATE?如何?
- 为什么
if_exists='replace'
依赖 QVCI 而不是if_exists='append'
?
谢谢!