批量造数语句
原理就是先写一条数据,然后循环将当前数据再复制一遍(你可以用newid等方式创建不重复的字符串)
于是,每批插入的数据为2^(N-1),可以提高效率
参考脚本如下CREATE TABLE #a (n int NOT NULL PRIMARY KEY )
DECLARE @max AS INT ,@min INT,@rc AS INT
SET @max=130101797;
SET @min=130014711
SET @rc=1;
INSERT INTO #a VALUES (@min);
WHILE @rc * 2 <=@max-@min
BEGIN 
INSERT INTO #a SELECT n+@rc FROM #a
SET @rc=@rc*2
END INSERT INTO #a SELECT n +@rc FROM #a WHERE n+@rc<=@max;

解决方案 »

  1.   

    做tran,1W或更多条一提交试试
      

  2.   

    在普通双核电脑上
    我用 while 循环 插入  100W条20秒左右
    如果用服务器 估计几秒钟吧。
    很正常。
      

  3.   

    别说100w条了,我昨天while 100w条,机器干冒烟了都
      

  4.   

    如何做到每千次或N次提交一次?先前我vs 2008写的代码基本没什么问题,但是后来改成一次性插入数据,现在软件退出后依然残留在进程中,不晓得是不是修改了sql语句的问题,哎,纠结
      

  5.   

    生成文本,上传到服务器,用bulk导入...100W ...很easy的...
      

  6.   


    对对,据说有这么个bulk的东西,如何写呢
      

  7.   


    对对,据说有这么个bulk的东西,如何写呢
    --test.txt  文件内容
    --7000,23940
    --234,234
    --2394,2
    --4234,32--drop table test
    create table test(col varchar(200),id int)
     
      bulk insert test
      from 'f:\test.txt'
      with
      (fieldterminator=',',
      rowterminator='\n')
       select * from test
     类似这样
      

  8.   


    对对,据说有这么个bulk的东西,如何写呢
    --test.txt  文件内容
    --7000,23940
    --234,234
    --2394,2
    --4234,32--drop table test
    create table test(col varchar(200),id int)
     
      bulk insert test
      from 'f:\test.txt'
      with
      (fieldterminator=',',
      rowterminator='\n')
       select * from test
     类似这样能否给个详细点的例子呢,例如文本的格式,然后插入的数据格式什么的例如我的数据有4列
    1列是自序ID
    2列是name
    3列是type
    4列是num其中name长度不固定
    type类型长度不固定
    num在10-15个字节长度
      

  9.   

    要用bulk insert插入大量数量
      

  10.   

    不好意思,出门了才回来,我想知道的是在使用bulk insert插入数据时,生成的文本格式,谢谢
      

  11.   

    其实没那么复杂。
    1.你把文本先导出来,手动导入数据库。 这个时候系统就会自动生成一个表,表里每一列的大小和类型你调整下就好。2.使用这个存储过程,文本是以逗号分隔的类似于
    1,2,3,4
    2,3,4,5
    5,6,6,6 这样的数据格式文本档。
    里面@filename  是文本文件的地址类似于d:\abc\def.txt 这样的CREATE procedure [imp].[importEJCOUPON]
    @fileName nvarchar(80)
    as
    beginDECLARE @sql nvarchar(4000)
    set @sql='BULK INSERT dbo.COUPON FROM '''+@fileName +''' WITH (FIELDTERMINATOR ='''+','+''', ROWTERMINATOR= '''+'\n'+''')';
     set @sql=replace(@sql,'\\','\')
    print @sql
     EXECUTE sp_executesql @sql
     --exec @sql
    select 1
    end 
    3.调用上面的存储过程 给@filename f赋值就行了。
      

  12.   

    在sql事件分析器中
    BULK INSERT dbo.imim FROM 'c:\1.txt' WITH (FIELDTERMINATOR =',', ROWTERMINATOR= '\n')
    服务器: 消息 8105,级别 16,状态 3,行 1
    'dbo.imim' 不是用户表。无法执行 SET 操作。
    执行后是这么个效果
    在sql企业管理器中
    BULK INSERT dbo.imim FROM 'c:\1.txt' 执行后是dbo.imim不是用户表,不能执行set操作本人基本sql是0,所以尽量详述吧,嘿嘿
      

  13.   

    正好看到一篇:请参考:
    http://www.cnblogs.com/wintersun/archive/2011/01/30/1948034.html