sql 脚本

1): 批量插入数据

begin
    declare @i int
    declare @name nvarchar(max)
    set @i = 2
    while @i < 5000
        begin
            set @name = 'user' + convert(nvarchar(max), @i)
            insert into EricSun_DB.dbo.Users([LoginName]
                                          ,[Email]
                                          ,[DomainGroup]
                                          ,[Title]
                                          ,[Manager]
                                          ,[Department]
                                          ,[IsActive]
                                          ,[IsDeleted]
                                          ,[SID]
                                          ,[Flags]
                                          ,[DisplayName]) 
                        values(@name, 'email', 0, 'mvp', 'manager', 'deparment', 0, 0, 0, 0, 'display name')
            set @i = @i + 1
        end
  end

 

2):将table中的数据select出来并且缓存到table变量中

DECLARE @TempCustomer TABLE
(
   CustomerId uniqueidentifier,
   FirstName nvarchar(100),
   LastName nvarchar(100),
   Email nvarchar(100)
);
INSERT INTO 
    @TempCustomer 
SELECT 
    CustomerId, 
    FirstName, 
    LastName, 
    Email 
FROM 
    Customer
WHERE 
    CustomerId = @CustomerId

http://stackoverflow.com/questions/4823880/sql-server-select-into-variable 

 

3):循环便利table变量中的数据

DECLARE @RowsToProcess  int
DECLARE @CurrentRow     int
DECLARE @SelectCol1     int

DECLARE @table1 TABLE (RowID int not null primary key identity(1,1), col1 int )  
INSERT into @table1 (col1) SELECT col1 FROM table2
SET @RowsToProcess=@@ROWCOUNT

SET @CurrentRow=0
WHILE @CurrentRow<@RowsToProcess
BEGIN
    SET @CurrentRow=@CurrentRow+1
    SELECT 
        @SelectCol1=col1
        FROM @table1
        WHERE RowID=@CurrentRow

    --do your thing here--

END

http://stackoverflow.com/questions/1578198/can-i-loop-through-a-table-variable-in-t-sql

 

4):将table中的数据select出来并且缓存到int变量中,并且向对应的table中添加数据

declare @dashboardRoleId int
declare @dashboardAppId int
declare @dashboardRoleName nvarchar(50)

set @dashboardAppId = 1
set @dashboardRoleName = 'EricSun'
insert into [Roles]([AppID],[RoleName]) values (@dashboardAppId, @dashboardRoleName)
set @dashboardRoleId = (select top(1) [RoleID] from [Roles] where [RoleName] = @dashboardRoleName)

declare @dashboardPageId int
set @dashboardPageId = (select top(1) [PageID] from [Pages] where [UrlName] = 'Dashboard')

insert into [PageRoles]([PageID], [RoleID], [CreateTime]) values (@dashboardPageId, @dashboardRoleId, GETDATE())

 

 

 
一、简介 1.1前言 1、由于最近工作一直用Oracle,故对Oracle数据库研究为对象。 2、根据工作业务需求实际情况进行功能研发。为什么要开发呢?因为在数据库升级或者迁移的时候,为了保证不同环境不同数据库数据保持同步,故数据库SQL脚本非常作用。比如:数据库主脚本,副脚本,增量脚本。 3、 什么是主脚本、副脚本、增量脚本呢? 3.1、主脚本指数据库表或存储过程,视图脚本,序列等脚本。 3.2、副脚本指必须执行主脚本之后才执行的脚本。换句话说在没执行主键脚本的情况下,副脚本执行之后会回滚事务失败。 3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则需要的SQL脚本。 2、减少人工编写SQL脚本出错率问题,完全通过程序检测SQL准确性。 3、帮助开发人员提高SQL编写效率,减少人工编写SQL开发成本问题。 4、帮助开发人员节约时间,同时避免繁琐不必要编写SQL的工作。 二、实现方式与原理 2.1实现方式 1、实现方式分:正向与逆向实现。什么是正向与逆行呢【是否有鸡还是有蛋,先后道理同等】 2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 3、逆向方式:首先有数据库表,然后通过ORM持久化技术连接数据库再读取表的字段等属性出来,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 2.2原理 对数据库软件内置核心表或视图查询出来存储用户行为表结构所有属性信息,对此属性结构信息进行分析与组装所需要SQL脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值