相关疑难解决方法(0)

如何将数据从一个表插入/更新到另一个表(postgresql)?

有两张桌子

tmp_stat:
date, site_id, ip, block_id, count
Primary Key (date, site_id, ip, block_id)

main_stat:
date, site_id, ip, block_id, count
Primary Key (date, site_id, ip, block_id)
Run Code Online (Sandbox Code Playgroud)

当没有这样的(date,site_id等)时,我需要从tmp_stat向main_stat插入行,并且当它们已经尽快存在时,需要更新计数

tmp_stat包含大约500000行,main_stat包含millons

postgresql performance upsert

1
推荐指数
1
解决办法
2531
查看次数

如何为PreparedStatements重写SQL语句?

我想将folling的SQL语句重写为动态PreparedStatementjava:

UPDATE table SET field='C' WHERE id=3;
INSERT INTO table (id, field)
       SELECT 3, 'C'
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);
Run Code Online (Sandbox Code Playgroud)

特别是我不知道如何将SELECT 3, 'C'行重写为动态语句.

UPDATE table SET name=:name WHERE id=:id
INSERT INTO table (id, name)
       SELECT 3, 'C'  <-- how could I rewrite these values to take the dynamic values from PreparedStatement?
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);
Run Code Online (Sandbox Code Playgroud)

我的对象,类似:

@Entity
public class MyEntity {
   long id, String name;
}
Run Code Online (Sandbox Code Playgroud)

java sql postgresql jdbc

1
推荐指数
1
解决办法
515
查看次数

在PostgreSQL 9.5上合并

我正在尝试在PostgreSQL 9.5中进行合并,但出现以下错误:

ERROR:  syntax error at or near "MERGE"
LINE 1: MERGE INTO TP_ESTADO_EQUIPOS AS EQ
        ^

********** Error **********

ERROR: syntax error at or near "MERGE"
SQL state: 42601
Character: 1
Run Code Online (Sandbox Code Playgroud)

的SQL

MERGE INTO TP_ESTADO_EQUIPOS AS EQ
USING (SELECT * FROM TEMP_TABLE_STATE_EQUIPMENT) AS VEQ
ON EQ.ESTADO_EQUIPOS_ID = VEQ.ESTADO_EQUIPO_ID
 WHEN MATCHED THEN (
 EQ.TIEMPO_INICIO=VEQ.TIEMPO_INICIO,
 EQ.TIEMPO_FIN=VEQ.TIEMPO_FIN,
 ...
 )
WHEN NOT MATCHED THEN
INSERT(Estado_Equipos_ID,
        Tiempo_Inicio,
        ...
        )
        VALUES(VEQ.ESTADO_EQUIPO_ID,
                VEQ.Tiempo_Inicio,
                ...);
Run Code Online (Sandbox Code Playgroud)

我一直在阅读文档,可能不得不使用UPSERT,但是对于那是否一定是错误,我仍然不清楚。

sql postgresql

1
推荐指数
1
解决办法
3088
查看次数

如何在 postgresql 9.3 中插入​​批量行并忽略重复项

我有很多行数据要插入到一个表中。表中已有数据。当我像这样进行批量插入时,

INSERT INTO permission(username, permission) values(('john','ticket_view'), ('john','ticket_modify'), ('john','ticket_approve'));
Run Code Online (Sandbox Code Playgroud)

但是我的表已经有一行john, ticket_view在这种情况下我上面的插入查询以错误结束duplicate key value violates unique constraint

如何在 postgresql 9.3 中忽略这个重复问题?我只想插入所有行。如果存在类似的行,我想忽略它。我怎样才能做到这一点?我欢迎你的帮助。

postgresql upsert on-duplicate-key postgresql-9.3

1
推荐指数
1
解决办法
5725
查看次数