飘飘悠悠 发表于 2015-1-16 22:36:27

MYSQL编程:SQL Server中兼并用户日记表的办法

首先我们要知道,或许有一项技术存在很多理由让我们可以选择使用MySQL学习教程,但是让我们不使用它往往只要有一个理由就足够了。server在保护SQLServer数据库的过程当中,人人是否是常常会碰到不计其数的相似log20050901这类日记表,每个表中数据都不是良多,一个一个翻开看十分不便利,大概偶然候我们必要把这些表中的材料汇总,一个一个翻开操纵也是很贫苦。上面就先容了一种主动化的兼并表的办法。
我的思绪是创立一个用户存储历程来完成一系列主动化的操纵,以下是代码。
--存储历程我定名为BackupData,可使用本人界说的称号。
--参数1:@TableTarget天生的方针表的称号
--参数2:@TableStart兼并入手下手的表名
--参数3:@TableEnd兼并停止的表名
CREATEPROCEDUREBackupData@TableTargetsysname,@TableStartsysname,@TableEndsysname
AS
DECLAREtnames_cursorCURSOR
FOR
SELECTTABLE_NAME
FROMINFORMATION_SCHEMA.TABLES
OPENtnames_cursor
DECLARE@TableNamesysname
DECLARE@TablePrefsysname
DECLARE@IsTargetExistinteger
--判别方针表是不是存在
SET@IsTargetExist=(SELECTcount(TABLE_NAME)FROMINFORMATION_SCHEMA.TABLESwheretable_name=@TableTarget)
--假如方针表不存在则新建表
IF@istargetexist=0
BEGIN
--EXEC中的语句能够用SQLServer编写的表剧本交换。注重在方针表中不克不及够存在与需兼并表中称号一样的“主动编号”范例的字段。
EXEC(CREATETABLE.[+@TableTarget+]
(
(10)COLLATEChinese_PRC_CI_ASNULL,
(10)COLLATEChinese_PRC_CI_ASNULL,
……
))
END



FETCHNEXTFROMtnames_cursorINTO@TableName
WHILE(@@FETCH_STATUS-1)
BEGIN
IF(@@FETCH_STATUS-2)
BEGIN
SELECT@TableName=RTRIM(@TableName)
--以下两行依据日记表的称号变动
--取日记表名的前3位作为标识
SELECT@TablePref=LEFT(@TableName,3)
--判别表名是不是附合请求
IF(@TablePref=log)and(@TableName>=@TableStart)and(@TableName<=@TableEnd)
--入手下手导进
BEGIN
EXEC(INSERTINTO+@TableTarget+SELECT*FROM+@TableName)
PRINT表+@TableName+已导进+@TableTarget+中
END
END
FETCHNEXTFROMtnames_cursorINTO@TableName
END
--开释内存
CLOSEtnames_cursor
DEALLOCATEtnames_cursor
把下面代码在SQL查询剖析器中运转即天生存储历程BackupData。
BackupData的利用办法以下:
EXECBackupData‘兼并后表名’,’入手下手表名’,’停止表名’,比方:
EXECBackupData‘_logs200508’,’log200508000000’,’log200508319999’。
由于我没有找到能够完成这类操纵的SQL语句以是写了如许的存储历程,假如人人有好的更复杂的举措请给我留言或来信:pujiang10@gmail.com。
与数据库相关的流程的逐渐标准化,使得解决方案提供商能以更便捷的方式提供服务、部署应用程序、规划容量和管理资源。DBaaS模式还有助于减少数据和数据库的冗余度并提升整体服务质量。

透明 发表于 2015-1-18 05:03:01

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

山那边是海 发表于 2015-1-21 10:51:02

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

小魔女 发表于 2015-1-30 15:59:09

是要和操作系统进行Socket通讯的场景。否则建议慎重!

柔情似水 发表于 2015-2-6 13:56:19

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

灵魂腐蚀 发表于 2015-2-16 09:30:21

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

深爱那片海 发表于 2015-3-5 03:29:38

连做梦都在想页面结构是怎么样的,绝非虚言

精灵巫婆 发表于 2015-3-11 23:05:44

总感觉自己还是不会SQL

若天明 发表于 2015-3-19 15:58:32

呵呵,这就是偶想说的

飘灵儿 发表于 2015-3-28 21:45:52

发几份SQL课件,以飨阅者
页: [1]
查看完整版本: MYSQL编程:SQL Server中兼并用户日记表的办法