首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

如何样批量在SQL2005插入数据

2012-12-15 
怎么样批量在SQL2005插入数据一张表A 里面有很多条数据,要插入到A1表中。表A和表A1的字段相同表A是文本类型

怎么样批量在SQL2005插入数据
一张表A 里面有很多条数据,要插入到A1表中。表A和表A1的字段相同
表A是文本类型导入进去的,只有一个字段

要把A表中的数据全部插入到A1中,因为用到了一些触发器,所以只能一条一条插入,相当于,插入一条 执行一次触发器。  有什么好的方法 批量插入‘

[解决办法]

触发器也可以批量插入啊  

insert 表名
select col1,col2,col3 from inserted...

这样就可以的

[解决办法]
支持Lee的
使用INSERT。。。SELECT。。。。进行插入

BULK INSERT插入貌似不太符合你的需求?
[解决办法]
情景1:不存在A1表:select * into A1 from A
情景2:存在A1表:insert into A1(列名) select 对应列名 from A
[解决办法]
大容量的话触发器要慎重,一是执行次数。二是会不会造成冲突或遗漏
[解决办法]
引用
1楼、2楼

如两位所说,
insert into A1
 select * from A

[解决办法]
引用:
引用1楼、2楼
如两位所说,
SQL code12insert into A1 select * from A

这种不行  触发器 只执行一次  有问题的
把我的触发器 写出来
create  trigger tr_userLog_insert
on A1 FOR INSERT
as
   begin   
  --delete  from A1  where dic like 'WARN%';
   declare
           @v_userid int,--用户Id
           @v_stamp int,--邮戳
           @v_identify nvarchar(4),--标识(page,base,play,cost)
           @v_pageurl nvarchar(50),--页面url
           @v_usertoken nvarchar(32),--用户标识
           @v_createtime datetime,--创建时间
           @v_sourcefilename nvarchar(32),--视频原文件
           @v_stbid nvarchar(24),--机顶盒id
           @v_fee nvarchar(32),--计费代码
           @v_description nvarchar(50);

--声明
    select @v_createtime = convert(datetime,subString(dic,7,19),120),--createtime
           @v_userid =  subString(dic,40,9),--userid
           @v_identify = subString(dic,82,4),--identify
           @v_pageurl = subString(dic,88,21),--pageurl
           @v_usertoken = subString(dic,167,32),--usertoken
           @v_sourcefilename = subString(dic,88,9),--sourcefilename
           @v_stamp = SubString(dic,73,7),--stamp
           @v_stbid = subString(dic,132,24),--stbid
           @v_fee = subString(dic,88,10), --fee


           @v_description  =  SubString(dic,109,50) from inserted 

select @v_createtime,@v_userid,@v_identify,@v_pageurl,@v_usertoken,@v_sourcefilename,@v_stamp,@v_stbid,@v_fee,@v_description

    if exists(select *from  inserted  where  dic like '%auth_info%')  --用户基本表
begin
insert into UserBase(userid,stamp,identify,stbid,usertoken,createtime,other)values(@v_userid,@v_stamp,@v_identify,@v_stbid,@v_usertoken,@v_createtime,'');
end
    if exists(select *from inserted  where  subString(dic,82,4)='play' )--播放表
        begin        
insert into UserPlaySongData(userid,stamp,identify,sourcefilename,createtime,other)values(@v_userid,@v_stamp,@v_identify,@v_sourcefilename,@v_createtime,'');
        end    
    if exists(select *from inserted  ) --用户日志表
        begin           
insert into UserLog(userid,pageurl,identify,stamp,createtime,other)values(@v_userid,@v_pageurl,@v_identify,@v_stamp,@v_createtime,'');
        end
    if exists(select *from inserted  where dic like '%cost%')--计费表
        begin
            insert into UserCharge(userid,identify,stamp,fee,description,createtime,other)values(@v_userid,@v_identify,@v_stamp,@v_fee,@v_description,@v_createtime,'');
        end

end

热点排行