【发布时间】:2020-02-25 14:07:22
【问题描述】:
因此,在我的 MYSQL 中,您可以在插入时使用 INSERT IGNORE 语法,而不是在插入重复行时抛出错误,而只是忽略该行
如果可能的话,我想在 Presto 中使用 Hive 数据库实现相同的目标吗?
我知道 hive 不是真正的关系数据库,因为 Presto 上的 INSERT 语句的文档非常基本
我想知道是否有一个简单的解决方法,因为我能想到的就是首先使用光标进行选择以循环遍历结果并插入
【问题讨论】:
因此,在我的 MYSQL 中,您可以在插入时使用 INSERT IGNORE 语法,而不是在插入重复行时抛出错误,而只是忽略该行
如果可能的话,我想在 Presto 中使用 Hive 数据库实现相同的目标吗?
我知道 hive 不是真正的关系数据库,因为 Presto 上的 INSERT 语句的文档非常基本
我想知道是否有一个简单的解决方法,因为我能想到的就是首先使用光标进行选择以循环遍历结果并插入
【问题讨论】:
在 Hive 3 之前,没有唯一约束的概念,即使在 Hive 3 中,据我所知也没有强制执行约束。
因此 Presto Hive 连接器不强制执行任何唯一约束,因此当您插入重复的行时,您的 INSERT 查询将永远不会失败。它们将被存储为独立的数据副本。
如果您想保持唯一性,则需要在应用程序级别进行外部处理。
【讨论】:
insert_existing_partitions_behavior。有关详细信息,请参阅文档任务 github.com/prestosql/presto/issues/485。