|
|
1
6
这正是SQL Server集成服务(SSIS)的优点。它记录在联机丛书中,与SQL Server相同。 |
|
|
2
1
不幸的是,我要说的是,您需要忘记您的客户端库,并在SQL中完成这一切。 |
|
|
3
1
你需要做多少次?如果只有一次,而且它可以在无人值守的情况下运行,我看不出为什么不应该重用现有的客户机代码。计算机是用来实现人类工作自动化的。如果效率不高,我知道这很糟糕,但如果你要做一周的工作来建立一个SSIS包,那么效率也很低。另外,您的客户端解决方案可能包含业务逻辑或验证代码,您必须记住这些代码才能传递到SQL。 你可能想研究一下 Create_Assembly ,通过网络移动客户端代码以驻留在SQL框中。这将避免网络延迟,但可能会破坏SQL服务器的稳定性。 |
|
|
4
1
坏消息:你有很多选择 使用flatfile转换:将所有数据提取到flatfile中,使用grep、awk、sed、c、perl将它们操作到所需的insert/update语句中,并针对目标数据库执行这些语句 赞成:快;反对:非常丑陋。。。维护的噩梦,如果你需要一周以上的时间,不要这样做。还有几十次处决 使用纯sql:我对sql server了解不多,但我认为它可以从另一个数据库中访问一个数据库,所以最快的方法之一是将它编写为一个“insert/update/merge语句的集合,其中包含select语句。 PRO:Fast,只有一种技术;CON:requiresdirectconnectionbetween databases您可能很快就达到SQL或可用SQL知识的极限,这取决于转换的类型。 使用t-sql或数据库提供的任何迭代语言,其他一切都与纯sql类似。 PRO:非常快,因为你没有离开数据库CON:我不知道t-sql,但如果它是类似PL/sql的语言,它就不是进行复杂转换的最佳语言。 使用高级语言(Java、C#、VB…):您可以将数据加载到适当的业务对象中,操作这些对象并将它们存储在数据库中。你现在看起来正在做的事情,虽然听起来有更好的ORMs可用,例如nhibernate 使用ETL工具:有一些用于提取、转换和加载数据的特殊工具。它们通常支持各种数据库。并且有许多策略可以随时决定更新或插入是否到位。 专家:对不起,你得向别人要这个,到目前为止,我对这些工具只有不好的经验。 骗局:一个高度专业化的工具,你需要掌握。我个人的经验是:转换的实现和执行速度比手写的SQL慢。可维护性的噩梦,因为所有东西都隐藏在专有的存储库中,所以对于IDE、版本控制、CI、测试来说,无论工具提供者提供给您什么,如果有的话,您都会陷入困境。 PRO:即使复杂的操作也可以以一种干净的、可维护的方式实现,您可以在开发转换时使用所有花哨的工具,如良好的ide、测试框架、CI系统来支持您。 CON:这增加了很多开销(从数据库中检索数据、实例化对象并将对象封送回目标数据库)。如果这是一个长期存在的过程,我会走这条路。 在最后一个选项的基础上,您可以通过使用消息传递和webservices进一步美化架构,如果您有多个源数据库或多个目标数据库,这可能是相关的。或者您可以手动实现多线程转换器,以便通过put获得。但我想我要离开你问题的范围了。 |
|
|
5
1
我和John在一起,SSIS是任何可重复进程导入大量数据的方法。它应该比你现在的30小时快得多。如果两个数据库位于同一服务器上或是链接服务器,也可以编写纯t-sql代码来执行此操作。如果走t-sql路线,您可能需要混合使用基于集合和循环的代码,以便在批处理(一次运行2000条记录)上运行,而不是在一个大插入将占用的整个时间内锁定表。 |
|
|
jchristo · 释放时服务炸弹爆炸[重复] 8 年前 |
|
|
Rod · 检查DataTable是否存在列以及是否为null 8 年前 |
|
|
user1451111 · 如何在ADO代码中存储大型查询。NET项目 8 年前 |