论坛首页 综合技术论坛

如何将一个数据库表(千万条)"快速"导入另一个数据库的同一张表

浏览 3019 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-08-28  

应用场景:
需要把A数据库users表(有1000W条数据)全部导入到B数据库users表(表结构一样,但B库的表是经过分区的).

A库与B库在同一台服务器上.

数据库版本:
MS2005

我的方案:
insert into A.dbo.users(field1,field2,field3) select * from A.dbo.users;

问题:
1.效率极低.导入时间超过30分钟还没完成
2.产生的日志文件极大(目前有几G的日志,就这一个操作)

请问各位有没有更好的方法快速导入.




   发表时间:2012-08-28  
SQL Server 不是有复制数据向导吗,用那个
0 请登录后投票
   发表时间:2012-08-28  
DB2 load 函数
0 请登录后投票
   发表时间:2012-08-28  
sqlserver有bulk ,你先导出成文件,再用bulk导进去
0 请登录后投票
   发表时间:2012-09-01   最后修改:2012-09-01
先导删除索引,待数据导完后再创建索引试试看
0 请登录后投票
   发表时间:2012-09-03  
抛出异常的爱 写道
DB2 load 函数

大牛惜字如金啊
0 请登录后投票
   发表时间:2012-09-03   最后修改:2012-09-03
java_user 写道
抛出异常的爱 写道
DB2 load 函数

大牛惜字如金啊

由于load方式可以把csv
直接写到硬盘页上
不用对约束
不用写单次回滚日志
不用..........很多我不知道的cpu动作.
所以速度会快很多

比冷备好的地方就是它可以增量
0 请登录后投票
   发表时间:2012-09-04  
抛出异常的爱 写道
java_user 写道
抛出异常的爱 写道
DB2 load 函数

大牛惜字如金啊

由于load方式可以把csv
直接写到硬盘页上
不用对约束
不用写单次回滚日志
不用..........很多我不知道的cpu动作.
所以速度会快很多

比冷备好的地方就是它可以增量

大量插入时要先把索引给去掉吧?
0 请登录后投票
   发表时间:2012-09-05  
数据库恢复模式设置为简单模式
  ALTER DATABASE [XXXX] SET RECOVERY SIMPLE WITH NO_WAIT
去掉主键、所有索引
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics