【问题标题】:Snowfalke sql update if exists else insert雪花 sql 如果存在则更新,否则插入
【发布时间】:2022-07-06 23:21:28
【问题描述】:

我看过其他问题,但似乎雪花不支持 sql 中的 if/else,至少不是其他 sql 服务器支持它的方式。

有些人建议使用 javascript,但如果可以的话,我想避免这种情况。

我正在尝试使用雪花 python 库向表中插入一些数据,如果它已经存在,那么我想更新数据,我查看了合并,但它似乎不适合我,因为我的数据不是一张桌子

这就是我迄今为止所没有的工作

f"""BEGIN
                IF (EXISTS (SELECT * FROM {self.okr_table} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date())))
                THEN 
                UPDATE {self.okr_table} SET [DATA] = {json.dumps(self.data)} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date()))
                ELSE 
                INSERT INTO {self.okr_table} (month, data, kpi) SELECT current_date(),parse_json('{json.dumps(self.data)}'), true;
                END"""

【问题讨论】:

标签: sql snowflake-cloud-data-platform snowflake-connector


【解决方案1】:

要执行 INSERT/UPDATE,最好使用单个 MERGE 语句


IF/ELSE 分支在 Snowflake 中起作用:

BEGIN
  IF (EXISTS (...)) THEN
      UPDATE ... ;
  ELSE
      INSERT ... ;
  END IF;
END;

【讨论】:

    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多