为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用 teradataml copy_to_sql 函数上传熊猫数据框

尝试使用 teradataml copy_to_sql 函数上传熊猫数据框

猛跑小猪 2022-06-02 11:13:02
我对将数据上传到 teradata 还是很陌生。我知道有效的方法是使用插入语句逐行插入,但希望避免这种情况。我正在尝试将我的熊猫数据框直接上传到 teradata,但尚未成功。我尝试了 2 种方法,我的偏好是让方法 1 起作用,但想先获得一个可行的解决方案。我试过2种方法。1.Teradataml 模块 - copy_to_sql 2.Teradata 模块 - 使用插入语句方法 1 :使用copy_to_sql 函数创建表from teradataml.dataframe.copy_to import copy_to_sqlfrom teradataml import create_context, remove_contextdf # some dataframetable_name="db.table"copy_to_sql(df = df_new, table_name = "db.table", primary_index="index", if_exists="replace")方法2:使用插入语句添加到已创建的表中import teradataudaExec = teradata.UdaExec (appName=appname, version="1.0", logConsole=False)connect = udaExec.connect(method="odbc",system=host, username=user,                            password=passwrd)num_of_chunks=100table_name="db.table"query='INSERT INTO '+table_name+' values(?,?,?,?,?);'df_chunks=np.array_split(df_new2, num_of_chunks)for i,_ in enumerate(df_chunks):    data = [tuple(x) for x in df_chunks[i].to_records(index=False)]    connect.executemany(query, data,batch=True)**method 1** get the following error related to access.  Not sure while the SQL statement is adding quotes for the bolded table below:OperationalError: (teradatasql.OperationalError) [Version 16.20.0.48] [Session 5229096] [Teradata Database] [Error 3524] The user does not have CREATE TABLE access to database U378597.[SQL: CREATE multiset TABLE **"db.table"** (    "PBP" VARCHAR(1024) CHAR SET UNICODE,     recon VARCHAR(1024) CHAR SET UNICODE,     date2 TIMESTAMP(6),     "CF" FLOAT,     "index" VARCHAR(1024) CHAR SET UNICODE)primary index( "index" )]**method 2** get a error about inserting dates.  Assume datetime needs to be converted in someway to work in teradata table but unsure howDatabaseError: (6760, '[HY000] [Teradata][ODBC Teradata Driver][Teradata Database] Invalid timestamp. ')
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

thetable_name是一个不合格的名称。要指定应在其中创建表的 Teradata“数据库”,请使用单独的schema_name参数。

对于“方法 2”,请考虑使用teradatasql包而不是teradata. 或者我想你可以.isoformat(' ')时间戳。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信