设为首页 收藏本站
查看: 1800|回复: 0

[经验分享] 处理sql server数据的经过,又学了一点点!

[复制链接]

尚未签到

发表于 2016-11-5 08:28:14 | 显示全部楼层 |阅读模式
问题描述如下:
      首先数据库在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)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295957-1-1.html 上篇帖子: Sql Server数据库事务介绍(二)---Sql语句,SqlTransaction和TransactionScope的使用方法 下篇帖子: SQL Server进程阻塞的检查和解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表