c#使用mssql2012导入向导

本文关键字:向导 导入 mssql2012 使用 | 更新日期: 2023-09-27 18:17:51

是否可以在c#代码中使用mssql2012导入向导来导入数据库和表?我想写一个程序,我可以导入数据库和表的访问数据库到一个mssql数据库。因此,作为一个gui, mssql2012导入向导工作得很好,我只需要在我的项目中用c#代码实现它。在。net框架中有任何预构建的类吗?

c#使用mssql2012导入向导

我建议您使用批量插入。这已经被管理到一个。net类SqlBulkCopy .

如果只需要将数据导入数据库,请使用SqlBulkCopy。导入向导不仅仅是将一批数据发送到服务器。

实际上,Import向导创建并执行带有数据转换的SSIS包,该转换从源提取数据并将其发送到目标。它自己不做任何事。向导的最后一步允许您保存生成的包并再次使用它,就像使用任何其他SSIS包一样。

你可以在"以编程方式加载和运行本地包"中使用代码提供程序加载保存的包并执行它。示例代码非常简单:

  string pkgLocation;
  Package pkg;
  Application app;
  DTSExecResult pkgResults;
  pkgLocation =
    @"C:'Program Files'Microsoft SQL Server'100'Samples'Integration Services" +
    @"'Package Samples'CalculatedColumns Sample'CalculatedColumns'CalculatedColumns.dtsx";
  app = new Application();
  pkg = app.LoadPackage(pkgLocation, null);
  pkgResults = pkg.Execute();
  Console.WriteLine(pkgResults.ToString());

如果你想每次都创建一个新包,你可以使用EzAPI库以编程方式创建一个包,保存它和/或执行它。MSDN博客包含一个创建简单数据流任务的示例:

public class EzOleDbToFilePackage : EzSrcDestPackage<EzOleDbSource, EzSqlOleDbCM, EzFlatFileDestination, EzFlatFileCM>
{
    public EzOleDbToFilePackage(Package p) : base(p) { }
    public static implicit operator EzOleDbToFilePackage(Package p) { return new EzOleDbToFilePackage(p); }
    public EzOleDbToFilePackage(string srv, string db, string table, string file)
        : base()
    {
        SrcConn.SetConnectionString(srv, db);
        Source.Table = table;
        DestConn.ConnectionString = file;
        Dest.Overwrite = true;
        // This method defines the columns in FlatFile connection manager which have the same
        // datatypes as flat file destination
        Dest.DefineColumnsInCM();
    }
    [STAThread]
    static void Main(string[] args)
    {
        // DEMO 2
        EzOleDbToFilePackage p2 = new EzOleDbToFilePackage("localhost", "AdventureWorks", "Address", "result.txt");
        p2.DataFlow.Disable = true;
        p2.Execute();
        Console.Write(string.Format("Package2 executed with result {0}'n", p2.ExecutionResult));
    }
}

您应该注意,如果生成的默认映射不适合您的任务,则必须在代码中分别定义每个映射。