您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 湛江分类信息网,免费分类信息发布

SqlServer大数据量搬移

2024/3/19 18:14:58发布21次查看
方法一:分步搬移(针对百万 数据 量) -----remove data---------- insert into bizoffersearch_insert_temp select top 2000000 id,0 isinsert from bizoffersearch a with(nolock) where ispublished=2 and ispublished3 and tradingservicetype in(1,3,4)
方法一:分步搬移(针对百万数据量)
-----remove data----------
insert into bizoffersearch_insert_temp
select top 2000000 id,0 isinsert
 from bizoffersearch  a with(nolock) where  ispublished>=2 and ispublished3
    and  tradingservicetype in(1,3,4)   and id not like 'js%'
select * into #temp11 from bizoffersearch_insert_temp where 1=2
while (select count(0) from bizoffersearch_insert_temp where isinsert=0)>1
begin
    insert into #temp11
    select top 400 * from bizoffersearch_insert_temp where isinsert=0
    insert into [192.168.1.61].offerhistorybybak.dbo.bizoffersearch_apidbdk_20100709_1
 select * from bizoffersearch  a with(nolock) where id in(select id from #temp11)
update bizoffersearch_insert_temp set isinsert=1 where id in (select id from #temp11)
    truncate table #temp11
    waitfor delay '00:00:00.500'
end
truncate table #temp11
drop table #temp11
truncate table bizoffersearch_insert_temp
-----delete data-------------------
select id,0 isdelete into #temp1 from [192.168.1.61].offerhistorybybak.dbo.bizoffersearch_apidbdk_20100709_1  with(nolock)
select * into #temp11 from #temp1 where 1=2
while (select count(0) from #temp1 where isdelete=0)>1
begin
    insert into #temp11
    select top 400 * from #temp1 where isdelete=0
 delete  bizoffersearch  with(rowlock) where id in  (select id from #temp11)
    update #temp1 set isdelete=1 where id in (select id from #temp11)
    truncate table #temp11
    waitfor delay '00:00:00.500'
end
truncate table #temp11
drop table #temp11
truncate table #temp1
drop table #temp1
方法二:bcp(针对千万以上的数据量)
如果数据量很大,通过分步搬移已经不能满足要求,这时我们可以考虑用bcp
步骤:
1. 将原数据导入到文件(运行时去掉换行,一次w记录)
  bcp select top 5000000 * from bkoffer.dbo.bizoffersearch  a with(nolock)
  where  ispublished>=2 and ispublished3 and  tradingservicetype in(1,3,4) 
  and id not like 'js%'  
  queryout h:\contacts1.txt  -q -s192.168.1.65 -c -t
2.将文件拷贝到备份机器
3.将文件中的数据导入到备份机器上的新表
  bcp offerhistorybybak.dbo.bizoffersearch_apidbdk_20100709 in h:\contacts1.txt -t -c -m 1000
4.删掉原数据(bizoffersearch_insert_temp表只存id和标志位isinsert,值为0或1)
  insert into bizoffersearch_insert_temp
 select id,0 from [192.168.1.61].offerhistorybybak.dbo.bizoffersearch_apidbdk_20100709   with(nolock)
 select * into #temp11 from bizoffersearch_insert_temp where 1=2
 declare @rowcounts int
 select @rowcounts=count(0)/1000 from bizoffersearch_insert_temp where isinsert=0
 while (@rowcounts)>=0
 begin
  insert into #temp11
  select top 1000 * from bizoffersearch_insert_temp where isinsert=0
  delete  bizoffersearch  with(rowlock) where id in  (select id from #temp11)
  update bizoffersearch_insert_temp set isinsert=1 where id in (select id from #temp11)
  truncate table #temp11
  select @rowcounts=@rowcounts-1
  waitfor delay '00:00:00.500'
 end
 truncate table #temp11
 drop table #temp11
 truncate table bizoffersearch_insert_temp
飞扬过海
湛江分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录