hive 将集合列表插入SQL,以便稍后在IN查询中使用

66bbxpm5  于 8个月前  发布在  Hive
关注(0)|答案(1)|浏览(89)

我想在一个列的单个字段中存储一个单词列表,然后我想在另一个select语句中取出,然后使用IN关键字来使用这个列表。
所以我用python写

list_stems = ", ".join(["'"+stem['label']+"'" for stem in json_final[keyword]])
list_stems = "("+list_stems+")"
query = "INSERT INTO {table_name} (keyword, stem_list) VALUES ('{keyword}', {list_stems})".format(table_name= 'db.help', keyword=keyword, list_stems=list_stems)
spark.sql(query)

然后,当我查看字段stem_list中写入的内容时,它是以{}开始和结束的内容。但是没有(),我可以稍后取出它们作为IN查询来执行。

nkcskrwz

nkcskrwz1#

首先,在列中存储非规范化的数据是一个非常糟糕的主意。如果你想在将来使用它,最好将每个单词存储在单独的一行中。
但是.如果我们回到你的例子,everything looks fine对我来说:

keyword = "1"
list_stems = ", ".join(["abc", "cde"])
list_stems = "("+list_stems+")"
query = "INSERT INTO {table_name} (keyword, stem_list) VALUES ('{keyword}', {list_stems})".format(table_name= 'db.help', keyword=keyword, list_stems=list_stems)
print(query)

相关问题