c#从excel导入sql数据库,主键重复则更新问题

c#从excel导入sql数据库,主键重复则更新问题,第1张

你可以先导入,并在数据库中创建一个行号列,记录每一行的行号。导入后,再对数据进行处理,设要判断重新的字段为Col1,设行号列为ID1,

设表名为TBL,那么代码如下:

DECLARE

@T

TABLE(

Col1

VARCHAR(1000

)

)

DECLARE

@C1

VARCHAR(1000)

INSERT

@T(

Col1

)

SELECT

Col1

FROM

TBL

GROUP

BY

Col1

HAVING

COUNT()

>

1

WHILE

((SELECT COUNT(*)FROM @T)>

0

)

BEGIN

SELECT

TOP

1

@C1

=

Col1

FROM

@T1

DELETE

@T

WHERE

Col1

=

@C1

DELETE

TBL

WHERE

Col1

=

@C1

AND

ID1

<

(

SELECT

MAX(

ID1

)

FROM

WHERE

Col1

=

@C1

)

END

这个问题想多了就变复杂了。

首先要确定除了你自己外没有人 *** 作数据库;

更新表A中的主键、和另一个字段;

更新B、C表中的AOID;

不需要关联,都直接增加6000即可。

update A set oid=oid+6000,recipientcertificateid=recipientcertificateid+6000;

update B set AOID=AOID+6000;

update C set AIOD=AIOD+6000;

原理:

A表直接将字段增加6000,而B与C表中外键需要相应修改,同时全表更新外键增加6000即可。

那就建一张临时表,把数据导到临时表,然后清空本表,再重新插入,插入的时候用新的OID规则。

设计数据库结构时,应该避免主键字段有意义,比如用学生学号、人的身份z号做主键都不好,因为这些数据后期都可能要改动,最好用一个序列号做主键去关联所有的子表,这样就不需要改主表主键值了。

你这个问题可以这样解决,先把要改主键的记录复制一条,主键用新值,然后把所有子表的对应记录改掉,最后删除主表的原记录。

以上就是关于c#从excel导入sql数据库,主键重复则更新问题全部的内容,包括:c#从excel导入sql数据库,主键重复则更新问题、SQL数据库主键修改问题、如何更改SQL数据库中的主键数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9518936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存