日期:2014-05-17  浏览次数:20654 次

怎么样批量在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),