SQL server大数据量导入,求解决方案

yangxingmen 2013-05-20 04:13:27
要用Java做一个客户端程序,连接两台sql server服务器,将一台服务器中的一个数据库表的数据导入到另外一台服务器的数据库表中,源数据表有2000万条以上的记录,需要全部导入,请问有什么解决方案,能快速地实现导入功能??????
...全文
364 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
bcp 导出到文件,压缩--copy--导入到一个新建表 然后再从新表弄过去。
oreoconansisu 2013-05-23
  • 打赏
  • 举报
回复
引用 15 楼 ap0405140 的回复:
2000万数据,一般不建议直接一次导入,要分批导入才行(例如一次传2000笔). 否则日志文件会暴涨喔. 个人认为,这个问题首要考虑的是数据库的运行安全,而非性能. 一次导的话,日志文件暴涨,数据库可能崩溃掉的.
同意,性能提速是需要考虑的一方面 安全方面更是注意的 如果为了效率而影响安全性 就得不偿失了
dyf0130 2013-05-23
  • 打赏
  • 举报
回复
引用 14 楼 xiaoxiangqing 的回复:
用bcp工具
把数据文件发到数据库服务器上,在上面执行 BCP in
唐诗三百首 2013-05-23
  • 打赏
  • 举报
回复
2000万数据,一般不建议直接一次导入,要分批导入才行(例如一次传2000笔). 否则日志文件会暴涨喔. 个人认为,这个问题首要考虑的是数据库的运行安全,而非性能. 一次导的话,日志文件暴涨,数据库可能崩溃掉的.
xiaoxiangqing 2013-05-23
  • 打赏
  • 举报
回复
用bcp工具
tomcat 2013-05-23
  • 打赏
  • 举报
回复
引用 3 楼 yangxingmen 的回复:
补充:是要通过客户端软件来设置数据源的数据库连接信息,再实现数据导入到目标数据库中。 这是一个数据分析软件,给客户使用的,随时可能要导入新的数据,所以是不可能在数据库后台先把数据导好的。 问题是:如何通过软件编程来实现这么大数据量的数据导入功能?(对性能有要求,如何才能更快速一些)
C#100万条数据导入SQL SERVER数据库仅用4秒 http://kb.cnblogs.com/page/73491/ 这篇文章有提到好多种,我使用的是第四种方法,仅供参考
yangxingmen 2013-05-23
  • 打赏
  • 举报
回复
引用 10 楼 tianxiaaiwojs 的回复:
直接做个SSIS,客户要用的时候执行一下Package,或者每个月都有Task跑..
请问通过编程如何实现呢? 源数据所在服务器及数据库名称事先都是不知道的,只是知道数据库表结构,要通过客户使用软件时指定好数据库连接信息之后,才开始导数据的
HAPPENS 2013-05-22
  • 打赏
  • 举报
回复
1.直接导出导入; 2.建立快照,用快照建库; 3.建立发布订阅,让后者同步前者的数据。
yangxingmen 2013-05-22
  • 打赏
  • 举报
回复
引用 8 楼 luckyrandom 的回复:
啥特别要求,一定要客户端软件去实现? 由后台按相同逻辑去实现受政治原因影响??
大哥,你做个软件给客户用,难到让客户自己去操作后台数据库?客户哪懂啊! 还是派个开发人员跟在旁边,客户哪时要用,就马上到后台把数据先导好?
tianxiaaiwojs 2013-05-22
  • 打赏
  • 举报
回复
直接做个SSIS,客户要用的时候执行一下Package,或者每个月都有Task跑..
yangxingmen 2013-05-21
  • 打赏
  • 举报
回复
引用 6 楼 luckyrandom 的回复:
2个DB SVR建链接直接导啦
2000多万条数据啊,直接导时间长,超时程序会报错啊~
Q315054403 2013-05-21
  • 打赏
  • 举报
回复
啥特别要求,一定要客户端软件去实现? 由后台按相同逻辑去实现受政治原因影响??
Q315054403 2013-05-20
  • 打赏
  • 举报
回复
2个DB SVR建链接直接导啦
daiyueqiang2045 2013-05-20
  • 打赏
  • 举报
回复
可以直接使用sql自带的导入数据的工具,尝试一下
铁歌 2013-05-20
  • 打赏
  • 举报
回复
除了楼上提到的禁用触发器和约束,和删除索引外,我这里提出一点就是:把目标数据库改成大容量日志模式 或简单模式 ALTER DATABASE [DBname] SET RECOVERY BULK_LOGGED WITH NO_WAIT
yangxingmen 2013-05-20
  • 打赏
  • 举报
回复
补充:是要通过客户端软件来设置数据源的数据库连接信息,再实现数据导入到目标数据库中。 这是一个数据分析软件,给客户使用的,随时可能要导入新的数据,所以是不可能在数据库后台先把数据导好的。 问题是:如何通过软件编程来实现这么大数据量的数据导入功能?(对性能有要求,如何才能更快速一些)
Barton 2013-05-20
  • 打赏
  • 举报
回复
删除目标表中的所有索引,然后早导入。 如果是我,直接用SSIS导入
發糞塗牆 2013-05-20
  • 打赏
  • 举报
回复
摘自《SQLServer 2005 Performance Tuning 效能调校》——胡百敬 最佳化大量导入的方法: 1、使用最少记录。 2、从多个用户端平行导入数据到单一表使用批次。 3、停用触发程序 4、停用条件约束 5、控制锁定行为 6、以原生格式导入数据

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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