upsert相关内容

Postgres upsert:区分新行和更新行

我正在考虑使用PostgreSQL INSERT .. on CONFLICT UPDATE 功能。理想情况下,我将能够区分哪些行已成功插入和哪些行已更新。有办法吗? 解决方案 为此您需要一个附加的辅助列( updated )。 创建表测试(id int主键,str文本,更新的布尔值) ; 插入测试值(1,“旧”,假); 插入测试值 (1,'new 1',false), (2 ..
发布时间:2020-05-30 01:30:19 其他开发

仅当值不存在时才从SELECT插入表中

仅在 table1时,我要将 table1.id 插入到 table2.t1col 中。 id 在 table2.t1col 中尚不存在。 我想我必须使用: 插入table2名称(t1col)值(从table1中选择ID) 但是我只想添加 id 在 解决方案 唯一/索引约束保证了值的唯一性。因此,建议这样做。 但是,不幸的是,违反约束会导致整个 ins ..
发布时间:2020-05-30 01:27:20 其他开发

UPSERT Postgres 9.5

我在CentOS 6上使用Postgres 9.5。 我有下表(DDL)。 创建表core_table.user_list( user_id SMALLSERIAL默认值nextval('core_table.user_list_user_id_seq':: regclass)NOT NULL, user_name VARCHAR(50)NOT NULL, full_name VAR ..
发布时间:2020-05-30 01:24:48 其他开发

带有WHERE子句的PostgreSQL Upsert

我正在尝试将Oracle合并查询迁移到PostgreSql。如本文所述,Postgres UPSERT语法支持“ where子句”来标识以下条件 不幸的是,该网页没有提供带有“ where子句”的示例。我尝试在其他地方搜索它,但找不到它。因此就是这个问题。 按照上面给出的网页中的相同示例,这里是一个示例设置: 创建表客户( customer_id串行主键, 名称VARCHAR ..
发布时间:2020-05-30 00:47:08 其他开发

使用node.js在Postgres中更新

我正在尝试使用具有pg扩展名(版本0.5.4)的node.js在postgres数据库中进行插入或更新。 到目前为止,我已经这段代码: (...) client.query({ text:“ update users设置is_active = 0,ip = $ 1,其中id = $ 2“, 值:[ip,id] },函数(u_err,u_result){ debug(socke ..
发布时间:2020-05-30 00:38:19 其他开发

带有JDBC参数标记的PostgreSQL更新

当使用参数标记从JDBC调用JDBC时,我有一条今天可以工作的INSERT语句: 将INSERT INTO错误队列作为eq (职位名称,sourceid,项目)VALUES(?,?,?) 在我的Java代码中,绑定参数: Connection connection = null; PreparedStatement stmt = null; try { ..
发布时间:2020-05-30 00:01:50 其他开发

使用选择的结果进行Postgres upsert

我正在尝试使用select的值对postgres进行增补。看起来像这样: INSERT INTO foo(a,b,c) SELECT a_,b_,c_ -多毛sql 在冲突(...条件...)上进行更新 设置“ c” = ??? 发生冲突时,我想使用select语句中的值之一,但是我不能找到正确的语法对其进行别名。我该如何使用Postgres? 解决方案 使 ..
发布时间:2020-05-29 23:39:13 其他开发

使用SQLAlchemy批量上传

我正在使用SQLAlchemy 1.1.0b将大量数据批量上传到PostgreSQL中,并且遇到了重复的关键错误。 from sqlalchemy import * from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.automap import automap_base import pg eng ..
发布时间:2020-05-29 23:24:23 Python

发生冲突的Postgres确实会在复合主键上进行更新

我有一张桌子,用户可以在其中回答问题。规则是用户可以回答许多问题,或者许多用户可以回答一个问题,但用户只能回答一次特定问题。如果用户再次回答该问题,则只需替换旧的问题即可。通常,当我们处理唯一列时,on冲突确实会更新。在这种情况下,列 person_id 和 question_id 不能唯一。但是,两者的结合始终是唯一的。如何实现在冲突时会更新的插入语句? CREATE TABLE“ an ..
发布时间:2020-05-29 23:19:32 其他开发

使用jOOQ在PostgreSQL中进行UPSERT

我正在尝试使用jOOQ库在PostgreSQL中执行UPSERT。 为此,我目前正在尝试在jOOQ中实现以下SQL语句: https://stackoverflow.com/a/6527838 到目前为止,我的代码如下: 公共类UpsertExecutor { private static final Logger logger = LoggerFactory.getLo ..
发布时间:2020-05-29 22:03:15 Java开发

如何在2列之一上的冲突中向Postgres增补?

当表中的两列之一发生冲突时,是否可以在Postgres 9.5中进行 upsert ?基本上,我有2列,如果任何一列引发唯一约束违例,那么我想执行更新操作。 解决方案 是的,此行为是默认行为。如果指定了 ON CONFLICT DO UPDATE ,则任何唯一约束冲突都构成冲突,然后执行 UPDATE 。 INSERT 语句只能有一个 ON CONFLICT 子句,但 conflict_t ..
发布时间:2020-05-29 20:57:23 其他开发

Postgres 9.5+:UPSERT返回更新和插入的行数

我得到了一个典型的例子: 插入user_logins(用户名,登录名) VALUES(“ Naomi” ,1),('James',1) 冲突(用户名) 执行更新设置登录名= user_logins.logins + EXCLUDED.logins; 但是现在我还需要知道: 插入了多少行 由于已存在而更新了多少行 无法插入多少行由于限制因素 如果 ..
发布时间:2020-05-29 20:31:56 其他开发

PostgreSQL在冲突更新中插入(向上更新)使用所有排除的值

当您向上插入一行(PostgreSQL> = 9.5),并且希望可能的INSERT与可能的UPDATE完全相同时,可以这样写: 插入表名(ID,用户名,密码,级别,电子邮件) 值(1,'John','qwerty',5,'john @ mail。 com') 冲突(id)进行更新设置 id = EXCLUDED.id,用户名= EXCLUDED.username, 密码= EXCLUDED ..
发布时间:2020-05-29 20:22:31 其他开发

如何使用INSERT ... ON CONFLICT ...更新所有列?

我有一个带有单个主键的表。当我尝试执行插入操作时,尝试插入具有现有键的行可能会导致冲突。我要允许插入更新所有列吗?有什么简单的语法吗?我试图让它“更新”所有列。 我正在使用PostgreSQL 9.5.5。 解决方案 UPDATE 语法 需要以明确命名目标列。 避免这种情况的可能原因: 您有很多列,只是想缩短语法。 除唯一列外,您不知道列名。 “所有列” 必须表示“目 ..
发布时间:2020-05-29 20:14:17 其他开发