我继承了一系列Python和Teradata文件。每个文件依赖于另一个文件。我试图使这一点更容易运行,并且我使用pyodbc来运行Teradata查询。其中一个查询运行良好,但当运行另一个查询时,会得到以下错误:
File "...\pandas\io\sql.py", line 1753, in _fetchall_as_list result = cur.fetchall()
ProgrammingError: ('ODBC SQL type 102 is not yet supported. column-index=12 type=102', 'HY106')
查询几乎相同,唯一改变的是分组级别(第一个查询运行得更细)。
我不知道为什么其中一个工作,但另一个不工作,但我想知道它是否与正在被导入的文件有关?我还认为,这可能与我的Teradata版本不兼容有关,但这并不能解释为什么一个查询工作,而另一个查询不工作。我对Python相当陌生,我没有看到102类型的错误。任何反馈他都会非常感激的。
发布于 2021-03-16 16:20:30
事情是这样的,它告诉你错误,只是没有很好地告诉你。要解决这个问题,请将SELECT语句更改为一次包含一个列,当我收到一个新列上的错误时,我将在查询中将其转换为已知的良好数据类型。
示例:
tableResult = pd.read_sql(
"SELECT TOP 10 * FROM warehouse.equipment;",
cnxn
) 结果会产生错误消息。我不需要select *,反正这是个糟糕的练习。开始一次添加一个。通常是日期,因为日期很难。
tableResult = pd.read_sql(
"SELECT TOP 10 equipment_id FROM warehouse.equipment;",
cnxn
) 有时候这也是垃圾,因为时间是谁?然后我将触发这个查询,并知道如何转换:
select
column_name,
data_type,
character_maximum_length,
collation_name
from information_schema.columns
where
table_schema in ('warehouse')
and table_name in ('equipment')
;现在,我可以看到有一列正在返回datetimeoffset。您将用您的技术堆栈的表替换这个过程,但答案是一样的。
https://stackoverflow.com/questions/65924710
复制相似问题