SQL 插入之前怎么判断数据库已经存在
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 插入之前怎么判断数据库已经存在相关的知识,希望对你有一定的参考价值。
要求从数据库A中 将一张表全部插入另一数据库B中 但是A数据库一段时间将会更新 所以要多次从数据库A中的数据导入到B中 所以怎么才能判断上一次导入的已经在数据可B中存在 不用再次导入呢 在两个数据库中 数据库A中的列名为C的要导入到数据库B中列名为D中 也就是说可以用数据库A中的列名C与数据库中的列名D来判断是不是数据库B中已经存在 求语句~~~
use A
insert into t_bd_item_info
(item_no,item_subno,item_name,item_subname,item_clsno,price,base_price,sale_price,main_supcust,other3,direct)
select
item_no,item_subno,item_name,item_subname,item_clsno,price,base_price,sale_price,main_supcust,other3,direct
from B.bi_t_item_info
如上 我想每次在插入之前 都判断下在B中的 item_no是否在A中已经存在同样的item_no 如果存在则掠过 如果不存在则插入~~~
insert into B_table
(f1,f2,f3...,D)
select F1,F2,F3,...C from A_table where C not in (select D from b_table);
此句实现的就是A中C列不在B中D列的数据都写入B中,但效率低。
如果可能,建议在A中增加一个标志位,标志是否已经写入过B,而且此标志位要做索引。 参考技术A 让两个数据库能直接建立分布式数据库并入同一个事务那就简单了,像 oracle 有 Database Link 能做到。DB2 也有类似的方式。
insert into B.Table2 (D)
select C
from A.Table1 a
left join B.Table2 b on a.C = b.D
where b.D is null
;追问
这样的话 如果在数据库B中的数据我已经修改 如果再次执行的话 不都又从数据库B中更新过来了么?
追答那你这个 B.item_no 还允许修改的?一般是不变的且唯一的作为 key 来判断才合适啊。会变的这个东西你怎么能判断它是本来就不存在还是复制过来之后被改了item_no 啊。
参考技术B insert into B (name1,name2) values(select A.name1,A.name2 from A,B where A.id!=B.id) 参考技术C 同意楼上Sql Server 判断表是否存在方法总结
#使用场景:
1、在创建表之前,需要先判断该表是否已经存在;
2、在删除表之前,需要先判断该表是否已经存在;
#方法总结:
1、判断实体表是否存在的方法:
1)、方法一:
if Exists(select top 1 * from sysObjects where Id=OBJECT_ID(N‘UserInfos‘) and xtype=‘U‘) print ‘表UserInfos 存在‘ else print ‘表UserInfos 不存在‘
2)、方法二:
if OBJECT_ID(N‘UserInfos‘,N‘U‘) is not null print ‘表UserInfos 存在!‘ else print ‘表UserInfos 不存在!‘
2、判断临时表是否存在的方法:
1)、方法一:
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N‘tempdb..#TempUsers‘) and type=‘U‘) print ‘临时表#TempUsers 存在!‘ else print ‘临时表#TempUsers 不存在!‘
2)、方法二:
if OBJECT_ID(N‘tempdb..#TempUsers‘,N‘U‘) is not null print ‘临时表#TempUsers 存在!‘ else print ‘临时表#TempUsers 不存在!‘
————————————————————————————————————
以上是关于SQL 插入之前怎么判断数据库已经存在的主要内容,如果未能解决你的问题,请参考以下文章
DetailsView向SQLServer插入数据时,怎么判断插入的数据是不是已经存在