管理员
|
楼主#
更多
发布于:2012-09-04 18:08
| | | | 自己写的游标操作语句 北大国家发展研究院论坛原来采用老式论坛,为接入Discuz论坛,需要对原来的数据进行处理, 经过一周的 数据处理,终于远程升级。 部分升级脚本(迁移贴子)如下: declare my_cursor cursor scroll for www.atcpu.com SELECT [ID] ,[TITLE] ,[CONTENT] ,[AUTHOR_ID] ,[AUTHOR_NAME] ,[AUTHOR_TEXT] ,[AUTHOR_SIG] ,[REPLY_TO] ,[POST_TIME] ,[BELONG_TO] ,[LOCKED] ,[POLL_COUNT]ccc ,[CLICK_COUNT] ,[REPLY_COUNT] ,[LAST_UPDATE] ,[DELETED] ,[IP] ,[LINKURL] ,[LINKIMG] ,[Flinkname] ,[Flinkurl] FROM [ccerforum].[dbo].[ARTICLES] where id>0 ORDER BY ID open my_cursor declare @ID int,@TITLE nvarchar(100) ,@CONTENT nvarchar(3000) ,@AUTHOR_ID int www.atcpu.com ,@AUTHOR_NAME nvarchar(40) ,@AUTHOR_TEXT nvarchar(120) ,@AUTHOR_SIG nvarchar(100) ,@REPLY_TO int ,@POST_TIME smalldatetime ,@BELONG_TO int ,@LOCKED smallint ,@POLL_COUNT int ,@CLICK_COUNT int ,@REPLY_COUNT int ,@LAST_UPDATE smalldatetime ,@DELETED smallint ,@IP nchar(15) ,@LINKURL nvarchar(128) ,@LINKIMG nvarchar(128) ,@Flinkname nvarchar(64) ,@Flinkurl nvarchar(64) declare @NewTopicId int,@NewLayer int,@AttachmentNum int,@lastpostid int fetch next from my_cursor into @ID ,@TITLE,@CONTENT,@AUTHOR_ID, @AUTHOR_NAME,@AUTHOR_TEXT,@AUTHOR_SIG,@REPLY_TO,@POST_TIME,@BELONG_TO, @LOCKED,@POLL_COUNT,@CLICK_COUNT,@REPLY_COUNT,@LAST_UPDATE,@DELETED,@IP, @LINKURL,@LINKIMG,@Flinkname,@Flinkurl while(@@fetch_status=0) begin if @REPLY_TO is null or @REPLY_TO='' set @NewLayer=0 else set @NewLayer=1 if @Flinkurl is null or @Flinkurl='' set @AttachmentNum=0 else set @AttachmentNum=1 if @AUTHOR_ID is null or @AUTHOR_ID='' set @AUTHOR_ID=isnull((SELECT [ID] FROM [ccerforum].[dbo].[USERS] where [NAME]=@AUTHOR_TEXT ),0) if @REPLY_TO is null or @REPLY_TO='' begin www.atcpu.com print 'replayto= null' set @lastpostid=(select(max(pid)+1) from [nsd_forum_discuz25].[dbo].[dnt_posts1] ) INSERT INTO [nsd_forum_discuz25].[dbo].[dnt_topics] ([fid] ,[iconid] ,[typeid] ,[readperm] ,[price] ,[poster] ,[posterid] ,[title] ,[postdatetime] ,[lastpost] ,[lastpostid] ,[lastposter] ,[lastposterid] ,[views] ,[replies] ,[displayorder] ,[highlight] ,[digest] ,[rate] ,[hide] ,[poll] ,[attachment] ,[moderated] ,[closed] ,[magic] ,[identify] ,[special]) VALUES (@BELONG_TO ,0 ,0 ,0 ,0 ,@AUTHOR_NAME ,@AUTHOR_ID ,@TITLE ,@POST_TIME ,@POST_TIME ,@AUTHOR_ID ,@AUTHOR_NAME ,@AUTHOR_ID ,100 ,@REPLY_COUNT ,0 ,'' ,0 ,0 ,0 ,0 ,@AttachmentNum ,0 ,0 www.atcpu.com ,0 ,0 ,0) set @NewTopicId=@@IDENTITY end else begin set @NewTopicId=isnull((select tid from [nsd_forum_discuz25].[dbo].[dnt_posts1] where pid=@REPLY_TO),999) end if @AttachmentNum=1 begin INSERT INTO [nsd_forum_discuz25].[dbo].[dnt_attachments] ([uid] ,[tid] ,[pid] ,[postdatetime] ,[readperm] ,[filename] ,[description] ,[filetype] ,[filesize] ,[attachment] ,[downloads]) VALUES (@AUTHOR_ID ,@NewTopicId ,@ID ,@POST_TIME ,0 ,isnull(@Flinkurl,'') ,' ' ,'image/pjpeg' ,751660 ,isnull(@Flinkurl,'') ,100) end INSERT INTO [nsd_forum_discuz25].[dbo].[dnt_posts1] ([pid],[fid] ,[tid] ,[parentid] ,[layer] ,[poster] ,[posterid] ,[title] ,[postdatetime] ,[message] ,[ip] ,[lastedit] ,[invisible] ,[usesig] ,[htmlon] ,[smileyoff] ,[parseurloff] ,[bbcodeoff] ,[attachment] ,[rate] ,[ratetimes]) VALUES (@ID ,@BELONG_TO ,@NewTopicId ,isnull(@REPLY_TO,0) ,@newlayer ,@AUTHOR_NAME ,@AUTHOR_ID ,@TITLE ,@POST_TIME ,@CONTENT ,@IP ,@AUTHOR_NAME ,0 ,1 ,1 ,1 ,1 ,1 ,@AttachmentNum ,0 www.atcpu.com ,0) set @lastpostId=@ID update [nsd_forum_discuz25].[dbo].[dnt_topics] set [lastpostId]=@lastpostId where tid=@NewTopicId fetch next from my_cursor into @ID ,@TITLE ,@CONTENT ,@AUTHOR_ID ,@AUTHOR_NAME ,@AUTHOR_TEXT ,@AUTHOR_SIG ,@REPLY_TO ,@POST_TIME ,@BELONG_TO ,@LOCKED ,@POLL_COUNT ,@CLICK_COUNT ,@REPLY_COUNT ,@LAST_UPDATE ,@DELETED ,@IP ,@LINKURL ,@LINKIMG ,@Flinkname ,@Flinkurl end go --fetch first from my_cursor into @fname -- --update authors set au_fname='aa' where current of my_cursor close my_cursor deallocate my_cursor --更新论坛dnt_topics的fid --update [nsd_forum_discuz25].[dbo].[dnt_topics] a set a.fid=(select b.fid from [nsd_forum_discuz25].[dbo].[dnt_forums] b where b.oldfid=a.fid) declare topic_cursor cursor scroll for SELECT [tid],[fid] from [nsd_forum_discuz25].[dbo].[dnt_topics] where fid<>0 ORDER BY tid open topic_cursor declare @tid int,@fid int fetch next from topic_cursor into @tid,@FID while(@@fetch_status=0) begin update [nsd_forum_discuz25].[dbo].[dnt_topics] set fid=isnull((select fid from [nsd_forum_discuz25].[dbo].[dnt_forums] where oldfid=@fid),999) where tid=@tid print str(@fid) fetch next from topic_cursor into @tid,@FID www.atcpu.com end close topic_cursor deallocate topic_cursor --更新论坛 dnt_posts1的fid declare post_cursor cursor scroll for SELECT [pid],[fid] from [nsd_forum_discuz25].[dbo].[dnt_posts1] where pid<>0 ORDER BY pid open post_cursor declare @pid int fetch next from post_cursor into @pid,@fid while(@@fetch_status=0) www.atcpu.com begin update [nsd_forum_discuz25].[dbo].[dnt_posts1] set fid=(select fid from [nsd_forum_discuz25].[dbo].[dnt_forums] where oldfid=@fid) where pid=@pid --print str(@parentid) fetch next from post_cursor into @pid,@fid end close post_cursor deallocate post_cursor 作者 ctz168
| | | | |
|