跨库转移数据性能问题,在线等答案。。。

chuanchang1314 2013-05-30 09:42:47
使用insert into tableName select * from DatabaseName.dbo.tableName转移数据
转移一张700多万的大表,需要8分钟左右,产生7G多的日志文件
求解有没有更好的方案提升性能,缩短时间???
...全文
173 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁歌 2013-06-04
  • 打赏
  • 举报
回复
1/ 大批量插入数据,库恢复模式设置为大容量插入模式或简单模式; 2/ 可以使用bcp "database.dbo.tablename" out c:\dbbackup\tablename.csv -w -t"," -T 然后使用bcp in ...或bulk insert ...导入。
大力水手 2013-05-30
  • 打赏
  • 举报
回复
接受数据的数据库设置为简单恢复或大容量恢复模式。 master.dbo.cmdshell 'bcp "select * from tb" -batch 10000' 授之于鱼不如授之于渔, 使用 Batch Size 提高 Transaction 性能 - 微软亚太区数据库技术支持组 官方博客 - Site Home - MSDN Blogs 好论坛你值得拥有!
  • 打赏
  • 举报
回复
select into 比insert select 快 你试试bcp导出文件早导入的方式怎么样 如果想要减少事务日志 就分批循环,中间写一个waitetime 来让系统回收日志达到重复利用。
chuanchang1314 2013-05-30
  • 打赏
  • 举报
回复
引用 1 楼 sz_haitao 的回复:
分批 插入-提交
分批插入能比批量插入快吗?
KevinLiu 2013-05-30
  • 打赏
  • 举报
回复
可以尝试分批多个交易,这样产生的日志没那么大。另外你可以尝试用SSIS之类的,可能性能更好一点。
haitao 2013-05-30
  • 打赏
  • 举报
回复
分批 插入-提交
chuanchang1314 2013-05-30
  • 打赏
  • 举报
回复
旧表和新表的结构不一样,使用select * into 速度确实很快,700多W条数据用不到一分钟,但要重新建索引,分区之类的,而且数据库有上百张表,看来只能通过这种方式来转移数据了
chuanchang1314 2013-05-30
  • 打赏
  • 举报
回复
引用 4 楼 SQL 的回复:
select into 比insert select 快 你试试bcp导出文件早导入的方式怎么样 如果想要减少事务日志 就分批循环,中间写一个waitetime 来让系统回收日志达到重复利用。
导出再导入的时间开销和insert into select差不多 用bcp导出到txt文件中需要2多分钟,导入则需要4多分钟
nzperfect 2013-05-30
  • 打赏
  • 举报
回复
700W才8分钟还可以啦 另外,你转移后,旧表要清空吗?如果要清空,就不如直接改名,再新建表了。
最爱午夜 2013-05-30
  • 打赏
  • 举报
回复
select * into 日志恢复模式改为大容量恢复模式,另外,禁用聚集索引。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧