使用bulk insert如果原表记录数超级庞大就先删除索引再插入,插入完成后在建回原来的索引这种情况是插入操作非常频繁才这样做

解决方案 »

  1.   

    insert tbName2(col, ...)
    select top 40000 col, ... from tbName1
      

  2.   

    用bcp
    1.以竖线形式分隔各字段
    EXEC master..xp_cmdshell 'bcp "select top 40000 col1,col2,col..,coln from database.dbo.table" queryout e:\test.txt -c -U"sa" -P"mima" -t"|"'
    2.根据文档导入数据
    EXEC master..xp_cmdshell 'bcp databse.dbo.table in e:\test.txt -c -q  -U "sa" -P "mima" -t"|"' 
    3.在第二步骤之前先检查索引,如包含索引对表的影响会较大的情况下,drop index indexname  ON dbo.table,导入之后再create index indexname ON dbo.table(col)
      

  3.   

    或用
    BULK INSERT dbo.table
       FROM 'e:\test.tbl'
       WITH 
          (
             FIELDTERMINATOR =' |',
             ROWTERMINATOR ='\n'
          )
    在索引对插入影响较小的情况下四万条记录marco08(天道酬勤)的最快。