【问题标题】:Import/export data from SQL Server programmatically using C# and ASP.NET使用 C# 和 ASP.NET 以编程方式从 SQL Server 导入/导出数据
【发布时间】:2012-03-29 10:07:09
【问题描述】:

我有一个用 C# 编写的 Web 应用程序,可以在 ASP.NET 环境中运行。 Web 应用程序使用 SQL Server 2008 数据库 (T-SQL) 来存储数据。它有大约 4-5 个数据表。所以我想知道 ASP.NET 中是否有任何东西可以帮助我以编程方式将这些表及其所有数据导出到文本文件(或内存数组)中,然后稍后将它们导入 SQL 数据库(显然来自文件或内存数组)?

附言。我需要这个的原因是在 Web 应用程序本身中提供一个功能,以从在单独的 IIS 上运行的 Web 应用程序的另一个副本导入/导出数据。

【问题讨论】:

    标签: c# asp.net sql sql-server tsql


    【解决方案1】:

    您可以构建一个 SSIS 包来执行您需要进行的任何复制。参数化包,以便您可以改变源和目标数据库/连接字符串等。从您的应用程序执行包。

    如果需要,您甚至可以通过编程方式构建 SSIS 包。 Microsoft 参考目前似乎已关闭,但此 SO post 包含您开始编程方面所需的基本链接。

    只是一个警告,虽然程序化的 SSIS 包构建效果很好,但它可能非常复杂,而且 SSIS 内部/API 的许多方面的文档都很少,如果它存在的话。最好先通过 SSIS Management Studio 应用程序构建包。

    【讨论】:

    • 谢谢。听起来有些复杂,尤其是我第一次听说 SSIS...
    【解决方案2】:

    在 T-SQL 中没有什么特别允许您与文件系统交互,但是在这两个方向上都有多种方法。几个简单的例子:

    This question也可能有一些有趣的评论。

    【讨论】:

    • 感谢您的链接。所以,是的,BULK INSERT 似乎是导入数据的答案,虽然它显然不会导出外键、关系、索引等。另外我假设没有 BULK EXPORT,是吗?
    • 不,没有 BULK EXPORT,这些方法仅适用于平面/批量数据。如果您尝试备份索引、键、关系等,您可能需要考虑适当的备份,而不是导出到平面文件。
    • 不,再说一次,这更像是一种将数据从一个网络应用副本移动到另一个副本的简单方法......
    【解决方案3】:

    如果我想定期在您提到的两个 SQL Server 实例之间复制数据,我将使用链接服务器,然后编写一个脚本,直接在两个服务器之间移动。

    Linked Servers (MSDN)

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 链接不存在了
      猜你喜欢
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多