最近做某项目的数据库分析,要实现对海量数据的导入问题,就是最多把200万条数据一次导入 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。