如何将Microsoft Access中的数据转移到SQL Server 2008?

3
在我的当前项目中,我每天都需要将数据从MS Access转移到Sql Server 2008标准版。当然,我可以使用SQL Migration tool将Access数据库转换为Sql Server数据库,但问题是我必须每天重复执行此操作以保持更新我的sql服务器数据库。
那么,有没有办法编写C#程序将数据从MS ACCESS文件传输到SQL SERVER?
非常感谢任何帮助。

2
SQL Server Integration Services怎么样? - Serkan Hekimoglu
为了准确地传达信息,Access的SSMA现在已经更新到4.2版本(http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5abe098d-c7e1-46c6-994a-09a2856eef0b&displaylang=en)。 - David-W-Fenton
这是自动化数据传输的Java解决方案。创建Jar并添加到调度程序中。在此处查看:https://dbisweb.wordpress.com/ - compyutech
4个回答

4
如Serkan在评论中建议的那样,我会选择使用SSIS(SQL Server Integration Services)来完成这个任务,特别是因为您已经在使用SQL Server,而SSIS正是为此类任务而构建的。
SSIS非常灵活(像大多数ETL包一样),您可以添加自定义逻辑来转换数据(如果有的话)。
此外,如果您在SQL Server中创建一个作业,则可以安排此任务,并且此作业将自动执行连接到MS Access数据库并将其用作数据源的SSIS包。
此外,您还可以通过使用DTExec.exe或使用Microsoft.SQLServer.ManagedDTS.dll公开的类,直接从C#代码调用SSIS包(如果出于某种原因您有不使用定期作业但需要为用户提供某种界面来启动任务的要求)。
请参阅此链接了解如何直接从C#代码调用SSIS包。

谢谢您的建议,我会尝试并看看效果如何。再次感谢。 - vijay shiyani

1

你也可以在C#中运行更新/删除/追加查询。使用指向相关数据库的各种IN子句。具体如何在C#中实现我不知道,但在Access中这些操作很容易实现。

[SELECT | INSERT] INTO destination IN
    {path | ["path" "type"] | ["" [type; DATABASE = path]]}

识别源表:

FROM tableexpression IN 
    {path | ["path" "type"] | ["" [type; DATABASE = path]]}

来自Access 97帮助文档。


1
我建议使用ETL工具(例如Talend Open Studio)。您可以设计一个转换作业(如果需要的话还可以进行适当的转换),然后使用操作系统的任务计划程序每天运行该作业。
注意:Talend Open Studio会生成Java或Perl代码。

1
为什么不将数据永久迁移到SQL Server,并将您的Access应用程序作为SQL Server数据库的前端,而不是Jet/ACE数据库呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接