m*o
2 楼
我用的是mysql,有一个table:
columnA, columnB
1,a
2,b
我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
duplicate的数据?
columnA, columnB
1,a
2,b
我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
duplicate的数据?
a*p
3 楼
小人都是戴眼镜的。
n*6
4 楼
没用过mysql,不知道以下几种方法是否对你有用。
Option1:
cursor
loop
If not exists (Select ... From ...)
Insert into ...
Option2:
Union, if not have to to use 'insert'.
Option1:
cursor
loop
If not exists (Select ... From ...)
Insert into ...
Option2:
Union, if not have to to use 'insert'.
B*g
9 楼
google is your best friend.
http://www.devshed.com/c/a/MySQL/Error-Handling-Examples/
发包子
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
http://www.devshed.com/c/a/MySQL/Error-Handling-Examples/
发包子
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
t*s
11 楼
if the version of mysql is 4.1 or later
you can use following insert syntax:
Insert ... On Duplicate Key Update
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
you can use following insert syntax:
Insert ... On Duplicate Key Update
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
z*3
15 楼
有个比较粗俗的方法,直接用程序写把code包在try{} catch(){} 里面,这样就算停止
了,但是下一个循环还是会调用try当中的代码。
了,但是下一个循环还是会调用try当中的代码。
B*g
17 楼
peng
http://www.mitbbs.com/article/Database/31141284_3.html
【在 f*****e 的大作中提到】
: DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
http://www.mitbbs.com/article/Database/31141284_3.html
【在 f*****e 的大作中提到】
: DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
a*x
18 楼
如果用A+B作primary key的话,可以考虑用
Insert ignore into
或者
Replace into
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
Insert ignore into
或者
Replace into
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
B*g
21 楼
I don't know much about mysql and I don't have an environment to test.
I am thinking this one will always insert an record. When dup key, update
one of the key to a new value then insert.
All above is guess.
【在 t*****s 的大作中提到】
: no, there must be some code after "On Dulicate Key Update"
: but you can update an unimportant field there
I am thinking this one will always insert an record. When dup key, update
one of the key to a new value then insert.
All above is guess.
【在 t*****s 的大作中提到】
: no, there must be some code after "On Dulicate Key Update"
: but you can update an unimportant field there
m*i
22 楼
Some straight forward way:
Put all your new data into a temp table X.
delete all rows in X which are already in the Dest table
delete X from X Join Dest where X.A = Dest.A and X.B = Dest.B
insert all records in X to the Dest table
insert into Dest select * from X
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
Put all your new data into a temp table X.
delete all rows in X which are already in the Dest table
delete X from X Join Dest where X.A = Dest.A and X.B = Dest.B
insert all records in X to the Dest table
insert into Dest select * from X
【在 m******o 的大作中提到】
: 我用的是mysql,有一个table:
: columnA, columnB
: 1,a
: 2,b
: 我要create一个batch insert,里面有可能已经有1,a 和2,b. 这种情况我不想再
: insert进去了。我试着加了个unique key 在columnA+columnB,可是这样的话,一旦遇
: 到duplicate的数据,mysql就停止insert了。 请问怎样让mysql继续insert那些不
: duplicate的数据?
相关阅读
如何在数据库中进行复杂查询, 但不把中间结果放到程序内存小问题新手问一个问题:你们学的数据库要考certificate才能工作吗请教制作网站shopping cart 的高手啊MySQL certificate study guide选课求助NND, 被oracle骚扰了。How to negotiate Job offer?how to extract large number of rows from sql server?谁能帮我看看这个sql query的优化谁知道这个公司Artech Information Systems LLC (转载)HELP: where to get recovery_model_desc in sql server 2000?新手想考oracle的DBA 认证,给点建议吧Offer rescinded, move on, looking for another jobUndefined function 'Date' in Expressionhow to display a variable求教一个数据库面试题,多对多关系表设计 (转载)Any way to fix sql 2000 to 2005 user password case sensitive problem?大家都忙啥呢?如何展开properties table?