建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > MSSQL Server教程 >

SQL Server海量数据导入方法

时间:2009-10-16 23:12来源: 作者: 点击:
要实现对海量数据的导入问题,把几百万条数据一次导入sqlserver中,如果使用普通的insert语句进行写出的话,恐怕没几个小时完无法完成,先是考虑使用bcp,但这是基于命令行的,对用户来说友好性太差,实际不大可能使用;最后决定使用BULK INSERT语句实现,BULK INSERT也

要实现对海量数据的导入问题,把几百万条数据一次导入sqlserver中,如果使用普通的insert语句进行写出的话,恐怕没几个小时完无法完成,先是考虑使用bcp,但这是基于命令行的,对用户来说友好性太差,实际不大可能使用;最后决定使用BULK INSERT语句实现,BULK INSERT也可以实现大数据量的导入,而且可以通过编程实现,界面可以做的非常友好,它的速度也很高:导入100万条数据不到20秒中,这个速度确实令人惊叹。

  但是使用这种方式也有它的几个缺点:

  1.需要独占接受数据的表

  2.会产生大量的日志

  3.从中取数据的文件有格式限制

  但相对于它的速度来说,这些缺点都是可以克服的,而且你如果愿意牺牲一点速度的话,还可以做更精确的控制,甚至可以控制每一行的插入。

  对与产生占用大量空间的日志的情况,我们可以采取在导入前动态更改数据库的日志方式为大容量日志记录恢复模式,这样就不会记录日志了,导入结束后再恢复原来的数据库日志记录方式。

  具体的一个语句我们可以这样写:

  alter database taxi

  set RECOVERY BULK_LOGGED

  BULK INSERT taxi..detail FROM 'e:\out.txt'

  WITH (

    DATAFILETYPE = 'char',

    FIELDTERMINATOR = ',',

    ROWTERMINATOR = '\n',

   TABLOCK

  )

  alter database taxi

  set RECOVERY FULL

  这个语句将从e:\out.txt导出数据文件到数据库taxi的detail表中。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片