postgresql - 来自具有不同表大小的表的 UPSERT
问题描述
我收到错误:
ERROR: column "some_col_name" does not exist Hint: There is a column named "some_col_name" in table "usert_test", but it cannot be referenced from this part of the query.
OnUPSERT
此错误的原因是源表(从 API 读取)并不总是具有与我要查找 UPSERT 的表相同的字段数。在 UPSERT 过程中有没有办法处理这个问题?到目前为止,我已经尝试过以下方法:
INSERT INTO scratch."usert_test" (many_cols)
SELECT *
FROM scratch.daily_scraper
ON CONFLICT (same_unique_id)
DO UPDATE
SET
many_fields = excluded.many_fields;
解决方案
在每个实例中具体命名每一列。
insert into scratch."usert_test" (column_name1, column_name2, column_name3,column_name3)
select cola, colb, colc, colf
from scratch.daily_scraper
on conflict (column_name1, column_name4)
do update
set
column_name3 = excluded.column_name3
, column_name2 = excluded.column_name2;
你有多少列正确命名每一列。(恕我直言)正如你应该做的那样。
推荐阅读
- android - 如何在 Android 设备的 CSS 中指定 Roboto Condensed?
- discord - 我最近使用 switch case 重写了我的机器人,现在它不响应命令
- reactjs - 将 Next Js 应用程序部署到 Firebase 托管
- android - 从 vs 代码中制作 APK
- java - Spring MVC @RequestBody 不适用于 JSONObject
- reactjs - React Redux,仅在第一页加载时从 API 加载数据。加载数据后渲染组件
- kubernetes - 在单节点集群的情况下,主节点和工作节点是同一个节点吗?
- python - python - 美丽的汤链接解析不起作用
- java - 从通用数组列表中查找最大值
- javascript - 如何关闭由结帐脚本打开的弹出窗口