首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将熊猫df移动到teradata:[HY000] [ Teradata ][][Teradata]无效时间戳

将熊猫df移动到teradata:[HY000] [ Teradata ][][Teradata]无效时间戳
EN

Stack Overflow用户
提问于 2019-09-25 13:50:49
回答 1查看 569关注 0票数 0

我有一个df,我想要移动到一个teradata表。我正在使用一个在这个平台上讨论过的框架。然而,我得到了一些错误。将df加载到teradata之后的整个逻辑是:

1)如果表不存在,那么创建表,否则跳过创建。

2)开始将df加载到表中。(请注意,我将把多个xlsx文件传递给一个df,并最终将其附加到teradata表中)

我编写了一个bteq脚本来创建一个如下所示的表:

代码语言:javascript
复制
    FROM DBC.TABLES WHERE DATABASENAME = 'abc' AND TABLENAME = 'sample';

.IF ACTIVITYCOUNT <> 0 THEN .GOTO SKIP_CREATION
.IF ACTIVITYCOUNT = 0 THEN .GOTO TABLE_NOT_EXISTS

.LABEL TABLE_NOT_EXISTS 
CREATE TABLE abc.sample ( 
col1 VARCHAR(400) CHARACTER  SET LATIN NOT CASESPECIFIC, 
col2 VARCHAR(400) CHARACTER SET LATIN NOT CASESPECIFIC,
.
.
col23  TIMESTAMP(0) WITH TIME ZONE FORMAT 'YYYY-MM-DD HH:MI:SSZ', 
col24 TIMESTAMP(0) WITH TIME ZONE FORMAT 'YYYY-MM-DD HH:MI:SSZ'
);

.LABEL SKIP_CREATION
.LOGOFF

我的python代码可以将df移动到teradata,如下所示:

代码语言:javascript
复制
df=some data frame
host,username,password = 'host','username', "password"
num_of_chunks = 1000
insert_query= "INSERT INTO abc.sample VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
udaExec = teradata.UdaExec (appName="IMC", version="1.0", logConsole=False)
with udaExec.connect(method="odbc",system=host, username = username,
                         password=password, driver="Teradata") as session:
    file_exist=session.execute(file=r"Path of the bteq file" ,fileType="bteq",ignoreErrors=[3803])
    schedule_chunks = np.array_split(df, num_of_chunks)

    for i,_ in enumerate(schedule_chunks):

        data = [tuple(x) for x in schedule_chunks[i].to_records(index=False)]

            session.executemany(insert_query, data,batch=True) 

当我运行它时,我会收到以下错误消息:

DatabaseError: HY000ODBC Teradata驱动程序无效时间戳。

有人能帮我解决问题吗?如果我正在正确地编写bteq脚本,也需要一些建议。我想避免每次丢桌子或者创建一个新的桌子。

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 04:33:21

我成功地将我的数据推入了Teradata。我所做的就是将我在dataframe中的时间戳列从datetime64转换为object。下面是我在运行上述代码之前添加的唯一代码行

代码语言:javascript
复制
df=df.astype(object).where(pd.notnull(df),'')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58100000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档