处理sql server数据的经过,又学了一点点!

问题描述如下:
首先数据库在187上,当前跑的数据库是album,另一个备份数据库是album_back,这个是我防止处理数据出错而把最初整理好的18万条数据放在了里面的cn_crazyasp_album_image_TImage表中,另外2张表一个是preview一个是TAlbum都是空白表.
说说处理过程,18万条数据分为2类,一类是活动照片记录,类型标记(ownerType)为activity;一类是个人照片记录,类型标记(ownerType)为user.这18万条数据目前不输入任何相册,其albumId都为null(当然在album 库中已有50000条albumId > 0了);
现在需要的过程是:遍历每条数据,根据这条数据的ownerType和ownerId去建立相册,即给每个活动建立一个默认的相册,放其相关的照片;对每个用户也建立一个默认的相片,存放其原来发的相片;建立好相册,把相册的id,放在这条记录的albumId中来;同时根据此记录中的图片地址url,去生成四张缩略图,同时往preview表里写入四条记录。
按照我最初的想法,就是写一个方法,配置为webwok的action或spring的定时任务来跑。方法很好写,但问题是处理起来要费好多时间!最后还是我们大哥提议用sql脚本写,直接在查询分析器里执行,当然这样先不考虑缩略图了。大体的sql 语句如下:

/*
select count(*) from cn_crazyasp_album_image_preview_TPreview --401786
select count(*) from cn_crazyasp_album_image_TImage --182030
select count(*) from cn_crazyasp_album_TAlbum --2124
*/
--复制图片对象表,包括数据和表结构
--select * into TImage from cn_crazyasp_album_image_TImage
--14秒

--select top 100 * from TImage
--select top 1 * from cn_crazyasp_album_TAlbum where ownertype='user'

--用户图片总数
--select count(*) from TImage where ownertype='user' --100012

--为所有活动和用户创建对应的相册
---INSERT INTO TAlbum (ownerType,ownerId,authorId) select ownerType,ownerId,authorId from TImage group by ownerType,ownerId,authorId
--23137行记录

--更新图片对象所属的相册的编号
/*
update TImage set TImage.albumId=(select a.id from TAlbum as a
where a.ownerType=TImage.ownerType and a.ownerId=TImage.ownerId and a.authorId=TImage.authorId)
*/


1.-----------------------------------------------
insert into cn_crazyasp_album_image_preview_TPreview(ownerId,url) select a.id,a.url from cn_crazyasp_album_image_TImage as a

2.把url颠倒次序

UPDATE cn_crazyasp_album_image_preview_TPreview
SET url = REVERSE(url)

3.把扩展名都去掉

UPDATE cn_crazyasp_album_image_preview_TPreview
SET url = REPLACE(url, LEFT(url, 4), '')

4.再把url颠倒过来

UPDATE cn_crazyasp_album_image_preview_TPreview
SET url = REVERSE(url)

5.把以下语句执行3次

INSERT INTO cn_crazyasp_album_image_preview_TPreview
(ownerId, url)
SELECT ownerId, url
FROM cn_crazyasp_album_image_preview_TPreview a
WHERE (id < 182018)
6.
UPDATE cn_crazyasp_album_image_preview_TPreview
SET height = 500, width = 500, type = 'big', nsize = 0
WHERE (id > 546051) AND (id < 728069)
7.为相册建立封面的sql语句
UPDATE cn_crazyasp_album_TAlbum
SET image =
(SELECT TOP 1 CONVERT(varchar(30), YEAR(m.inTime), 101)
+ '-' + CONVERT(varchar(30), MONTH(m.inTime), 101) + '/' + m.url
FROM cn_crazyasp_album_image_TImage AS m
WHERE m.authorId = cn_crazyasp_album_TAlbum.authorId AND
m.ownerId = cn_crazyasp_album_TAlbum.ownerId
ORDER BY id DESC)
WHERE (id < 23138)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值