c#使用mssql2012导入向导
本文关键字:向导 导入 mssql2012 使用 | 更新日期: 2023-09-27 18:17:51
是否可以在c#代码中使用mssql2012导入向导来导入数据库和表?我想写一个程序,我可以导入数据库和表的访问数据库到一个mssql数据库。因此,作为一个gui, mssql2012导入向导工作得很好,我只需要在我的项目中用c#代码实现它。在。net框架中有任何预构建的类吗?
对
我建议您使用批量插入。这已经被管理到一个。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));
}
}
您应该注意,如果生成的默认映射不适合您的任务,则必须在代码中分别定义每个映射。