由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 这种insert怎么做
相关主题
[合集] 这种insert怎么做how to find duplicates in mysql
也問 Common Table Expression 问题A weird error
MySQL 的一个问题求教Mysql中怎么解决添加大型数据产生的问题
How to split a column into several rows?SQL help.
Re: How to find a duplicate record in AcSQL Server insert speed too slow! Help?
补贴上次面试题a simple question about insert
什么时候不用索引mysql mapping and insert question
urgent help! insert value into table请问如何实现这样一个mysql的query, 谢谢
相关话题的讨论汇总
话题: insert话题: mysql话题: key话题: update话题: duplicate
进入Database版参与讨论
1 (共1页)
m******o
发帖数: 61
1
我用的是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的数据?
n********6
发帖数: 1511
2
没用过mysql,不知道以下几种方法是否对你有用。
Option1:
cursor
loop
If not exists (Select ... From ...)
Insert into ...
Option2:
Union, if not have to to use 'insert'.
c*******e
发帖数: 8624
3
脑筋太死了,你先insert,然后再处理不行吗
或者干脆直接就是set table

【在 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
发帖数: 34098
4
然后参考本版关于remove dup的文章。

旦遇

【在 c*******e 的大作中提到】
: 脑筋太死了,你先insert,然后再处理不行吗
: 或者干脆直接就是set table

n********6
发帖数: 1511
5
还可以先load to temptable, 处理好以后,再insert.这样对production table影响小。

【在 c*******e 的大作中提到】
: 脑筋太死了,你先insert,然后再处理不行吗
: 或者干脆直接就是set table

B*****g
发帖数: 34098
6
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的数据?

j*****n
发帖数: 1781
7
LEFT JOIN

【在 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
发帖数: 124
8
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的数据?

B*****g
发帖数: 34098
9
can this syntax ignore the duplicate without insert a diff value.

【在 t*****s 的大作中提到】
: if the version of mysql is 4.1 or later
: you can use following insert syntax:
: Insert ... On Duplicate Key Update

k********e
发帖数: 702
10
Yes!
It's mysql specific. not standard SQL, but it works on mysql.

【在 B*****g 的大作中提到】
: can this syntax ignore the duplicate without insert a diff value.
相关主题
补贴上次面试题how to find duplicates in mysql
什么时候不用索引A weird error
urgent help! insert value into tableMysql中怎么解决添加大型数据产生的问题
进入Database版参与讨论
B*****g
发帖数: 34098
11
so we can have no code is after "On Duplicate Key Update"

【在 k********e 的大作中提到】
: Yes!
: It's mysql specific. not standard SQL, but it works on mysql.

z*3
发帖数: 33
12
有个比较粗俗的方法,直接用程序写把code包在try{} catch(){} 里面,这样就算停止
了,但是下一个循环还是会调用try当中的代码。
f*****e
发帖数: 5177
13
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'

【在 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
发帖数: 34098
14
peng
http://www.mitbbs.com/article/Database/31141284_3.html

【在 f*****e 的大作中提到】
: DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
a****x
发帖数: 231
15
如果用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的数据?

t*****s
发帖数: 124
16
no, there must be some code after "On Dulicate Key Update"
but you can update an unimportant field there

【在 B*****g 的大作中提到】
: so we can have no code is after "On Duplicate Key Update"
d*h
发帖数: 2347
17
use REPLACE INTO ... (mysql only SQL extension).

【在 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
发帖数: 34098
18
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

m***i
发帖数: 2480
19
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的数据?

t*****s
发帖数: 124
20
haha, your guess is incorrect
only update, no insert

【在 B*****g 的大作中提到】
: 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.

1 (共1页)
进入Database版参与讨论
相关主题
请问如何实现这样一个mysql的query, 谢谢Re: How to find a duplicate record in Ac
万佛,请教一个数据库问题 (转载)补贴上次面试题
MySQL语句请教什么时候不用索引
请问MySQL 可以快速处理table有1亿条数据么?urgent help! insert value into table
[合集] 这种insert怎么做how to find duplicates in mysql
也問 Common Table Expression 问题A weird error
MySQL 的一个问题求教Mysql中怎么解决添加大型数据产生的问题
How to split a column into several rows?SQL help.
相关话题的讨论汇总
话题: insert话题: mysql话题: key话题: update话题: duplicate