好吧
我一直在尝试不同的方法来实现这一点,但基本上我尝试使用python运行ETL作业,退出Teradata(TD),并在完成一些转换工作后将数据上传回TD。我使用Python 3.6
和sqlalchemy
。在
代码如下:
list_dict = [{'id': '4234l23kjl', 'source': 'Google'},
{'id': '4s5a6d42', 'source': 'Ad'},
{'id': '35v469r89', 'source': 'Google'}]
然后,我使用sqlalchemy连接到一个表,并获取目标表的表信息:
^{2}$然后,我尝试通过调用以下命令批量上载:
conn.execute(ins, list_dict)
我得到以下问题:
sqlalchemy.exc.DatabaseError: (teradata.api.DatabaseError) (2802, '[23000]
[Teradata][ODBC Teradata Driver][Teradata Database] Duplicate row error
in db.table. ') [SQL: 'INSERT INTO db.table (source) VALUES (?)']
[parameters: ('Google',)]
但是,当我打印我正在创建的ins
变量时,它给出了我想要的完整insert语句:
INSERT INTO db.table (id, source) VALUES (:id, :source)
它似乎正在尝试逐列插入,这不是我预期的行为,因此出现了重复行错误(两个google列为源代码)。有人知道这件事吗?在
目前没有回答
相关问题 更多 >
编程相关推荐