hive 插入覆盖表但更改单个字段

mkh04yzy  于 2023-08-04  发布在  Hive
关注(0)|答案(1)|浏览(207)

如果字段的值为空字符串,我希望更新表中所有项目的字段。
对于上下文,我可以通过以下查询获得需要更新的项目数:

  1. select count(*) from ddb_table where someField = "";

字符串
然后,我想更新这个表中someField为空字符串的项。例如,我想将someField更新为"foo",其中字段为空。
我想象INSERT OVERWRITE查询看起来像这样:

  1. insert overwrite ddb_table select field1, field2, field3, field4, someField = "foo" FROM ddb_table where someField = "";


换句话说,我想“保留”表中每个项目的所有原始值,除了someField,我想更新为"foo"。此更新只会发生在someField为空的项目上。
我该怎么做?

ddhy6vgd

ddhy6vgd1#

对于我的原始查询:

  1. insert overwrite table ddb_table select field1, field2, field3, field4, someField = "foo" FROM ddb_table where someField = "";

字符串
结果是someField似乎采用了field4中的值,而field4将被设置为FALSE
然后我试着:

  1. insert overwrite table ddb_table select field1, field2, field3, field4, "foo" as someField FROM ddb_table where someField = "";


这稍微好一点,除了field4将被设置为"foo"someField将被设置为之前在field4中的值。
然后我试着:

  1. insert overwrite table ddb_table select field1, field2, field3, "foo" as someField, field4 FROM ddb_table where someField = "";


这个对我很有效。出于某种原因,将我想更改的字段从字段列表的末尾移动到字段列表的中间似乎可以使其工作。

展开查看全部

相关问题