如何将 table 的内容直接插入到另一个 table 中?
How to insert correctly content of a table directly in an other table?
美好的一天,我在 Mirth Connect 中使用 Javascript 将分配在 PostgreSql 数据库 table 中的所有原始数据直接插入另一个 table 中,如果重复,更新行。我正在尝试使用它,但它给了我这个错误:
InsertIntoPatientMapping= dbConn.executeUpdate('insert into patient_mapping (select * from patient_mapping_test) ON DUPLICATE KEY UPDATE');
Wrapped org.postgresql.util.PSQLException: ERROR: syntax error at or near "DUPLICATE" Position: 69
我做错了什么?
假设你有一个 id 列,为了只考虑重复的键来更新,你可以:
insert into patient_mapping (select * from patient_mapping_test) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id
https://www.postgresql.org/docs/13/sql-insert.html
编辑
为此您需要考虑几件事:
- 您需要指定发生冲突的列;
- 每列必须有一个索引;
- 您需要指定如何替换冲突的值。
例如:
create table T1 (id integer unique);
create table T2 (id integer unique);
insert into T1 (id) values (1);
insert into T1 (id) values (2);
insert into T2 (id) values (1);
insert into T2 (select * from T1) on conflict (id) do update set id=EXCLUDED.id;
select * from T2;
这可能对您有帮助:https://www.postgresqltutorial.com/postgresql-upsert/
美好的一天,我在 Mirth Connect 中使用 Javascript 将分配在 PostgreSql 数据库 table 中的所有原始数据直接插入另一个 table 中,如果重复,更新行。我正在尝试使用它,但它给了我这个错误:
InsertIntoPatientMapping= dbConn.executeUpdate('insert into patient_mapping (select * from patient_mapping_test) ON DUPLICATE KEY UPDATE');
Wrapped org.postgresql.util.PSQLException: ERROR: syntax error at or near "DUPLICATE" Position: 69
我做错了什么?
假设你有一个 id 列,为了只考虑重复的键来更新,你可以:
insert into patient_mapping (select * from patient_mapping_test) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id
https://www.postgresql.org/docs/13/sql-insert.html
编辑
为此您需要考虑几件事:
- 您需要指定发生冲突的列;
- 每列必须有一个索引;
- 您需要指定如何替换冲突的值。
例如:
create table T1 (id integer unique);
create table T2 (id integer unique);
insert into T1 (id) values (1);
insert into T1 (id) values (2);
insert into T2 (id) values (1);
insert into T2 (select * from T1) on conflict (id) do update set id=EXCLUDED.id;
select * from T2;
这可能对您有帮助:https://www.postgresqltutorial.com/postgresql-upsert/