【发布时间】:2021-06-24 20:03:12
【问题描述】:
我的目标是遍历一组值并使用它们运行一组查询,这些查询将使用 pyodbc 将它们的结果插入到 hive 表中。
我试过了
params = ['USA','JP']
set(params)
for i in params:
cursor.execute(insert into table **some_db.some_tbl** SELECT name, country from **some_db.some_tbl_2** where country = ?,i)
得到了错误
以下并收到错误消息,ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were provided', 'HY000')。
如果我删除 insert into table some_db.some_tbl 部分,它工作正常。不知道还能做什么,因为所有文档和查看类似问题表明我所做的是正确的。
如果我保留 insert into table some_db.some_tbl 部分但删除参数化,它可以正常工作。
【问题讨论】:
-
你在 some_db.some_tbl 中有多少列?你能像这样发出
cursor.execute(insert into some_db.some_tbl(name, country ) SELECT name, country where country = ?,i) -
some_db.some_tbl 有两列。我正在尝试使用 CTAS、ITAS 的变体(即 - 将表格插入为选择)。如果我省略参数化或插入,这实际上有效,只使用选择。因此,这两种技术似乎都受支持,但是当结合使用时,我得到了原始问题中的错误。
-
我已经尝试了您建议的方法,但返回相同的错误。由于某种原因,当我使用“插入”时,参数标记未被识别。
标签: sql hadoop hive pyodbc impala