2016-11-28 10 views
0

バルクを発行するときに、DBおよび/またはJDBCドライバによってスローされた例外を無視する方法を教えてください。PostgresqlまたはMySQLにバルクを挿入するときに重複制約を無視する

は、私はいくつかのユーザーを挿入バルクにしたいと私は

INSERT INTO users 
(id,name,age,email,pass_code) 
VALUES 
(1,'Mark',18,'[email protected]',123), 
(2,'Zak',18,'[email protected]',123), 
(3,'Djigi',18,'[email protected]',123), 

(1,'James Petkov',18,'[email protected]',123), --Duplicated by id ? 

(4,'Kinkinikin',18,'[email protected]',123), 
(5,'A bula bula ',18,'[email protected]',123), 
(6,'Shakazulo',18,'[email protected]',123); 

どのように残りのレコードを挿入し続けるためにエンジンのMySQL/PostgreSQLのを伝えるために

キーユニークとしてIDを持って言うことができますか?

これはSQLでサポートされていますか?

+0

このIDをテーブルの主キーにしないでください。とにかくそれは重複しているので、MySQLにIDを割り当てさせてください。 –

+0

は途中でエラーが発生した場合に挿入を継続する方法についてのご質問ですか? –

+0

@TimBiegeleisenアイデアはIDの生成ではなく、重複したレコードを挿入するときに例外を抑制するためのものです。 – Adelin

答えて

1

は、PostgreSQLでは、あなたは

INSERT ... ON CONFLICT (id) DO NOTHING; 

より一般的な解決策は、別途各INSERTを実行して、エラーを無視することで失敗した行を無視することができます。

関連する問題