我开始使用谷歌搜索,发现这篇文章讨论了互斥表.
我有一张约有1400万条记录的表格.如果我想以相同的格式添加更多数据,有没有办法确保我想要插入的记录不存在而不使用一对查询(即,一个查询要检查,一个要插入是结果集是空)?
unique对某个字段的约束是否保证insert如果它已经存在则会失败?
似乎只有一个约束,当我通过php发出插入时,脚本呱呱叫.
几个月前,我从Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新:
INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z)
ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2);
Run Code Online (Sandbox Code Playgroud)
我现在切换到PostgreSQL,显然这是不正确的.它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定PostgreSQL文档中的哪个被覆盖.
为了澄清,我想插入几个东西,如果它们已经存在则更新它们.
(postgresql)我试图将COPYcsv数据放入表中,但是我遇到了重复的密钥违规错误,并且没有办法告诉COPY我们忽略这些错误,所以按照互联网的智慧我尝试添加这个规则:
CREATE OR REPLACE RULE ignore_duplicate_inserts AS
ON INSERT TO mytable
WHERE (EXISTS ( SELECT mytable.id
FROM mytable
WHERE mytable.id = new.id)) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
为了避免这个问题,但我仍然得到那些错误 - 任何想法为什么?
我在postgresql中使用下面的命令创建一个表.
CREATE TABLE someTable (
id serial primary key,
col1 int NOT NULL,
col2 int NOT NULL,
unique (col1, col2)
);
Run Code Online (Sandbox Code Playgroud)
然后我执行2个插入语句.
insert into someTable (col1,col2) values(1,11),(1,12);
它的工作
insert into someTable (col1,col2) values(1,13),(1,14),(1,11);
得到错误(key(col1,col2)=(1,11)已经存在.
但我需要避免重复对.怎么可能?
我试试这个
x86_64-pc-linux-gnu上的PostgreSQL 9.5.0,由gcc编译的gcc(Ubuntu 4.8.2-19ubuntu1)4.8.2,64位和PostgreSQL 9.3,由gcc编译(Ubuntu 4.8. 2-19ubuntu1)4.8.2,64位
但我得到了错误
执行两个语句后我需要这样做.
(1,11),(1,12),(1,13),(1,14)
Run Code Online (Sandbox Code Playgroud) 我遇到了这个问题,我想要使用knexjs插入一组数据.但我希望插入忽略重复,即只有在数据不存在时才插入.我可以做这个
knex('rates').insert(allRates);
但我想知道ignore如果它存在,我可以使用修改器.我也不想做knex.raw
谢谢.
我有很多行数据要插入到一个表中。表中已有数据。当我像这样进行批量插入时,
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 中忽略这个重复问题?我只想插入所有行。如果存在类似的行,我想忽略它。我怎样才能做到这一点?我欢迎你的帮助。
sql ×4
postgresql ×3
mysql ×2
upsert ×2
copy ×1
duplicates ×1
insert ×1
knex.js ×1
performance ×1
php ×1
primary-key ×1
rules ×1
sql-insert ×1
sql-merge ×1