当前位置: 首页 > 编程语言 > C#

从一个数据库表复制到另一个C#分享

时间:2023-04-10 13:21:50 C#

从一个数据库表复制到另一个C#C#使用(vs2005)我需要将一个表从一个数据库复制到另一个数据库。两个数据库引擎都是SQLServer2005,对于远程数据库,源代码,我只有存储过程的执行权限,才能在本地获取需要的数据。本地数据库我有更多的控制权,因为[asp.net]应用程序需要此远程表的本地副本。我们希望它本身更容易查找和连接到其他表等。你能给我解释一下将这些数据复制到本地数据库的有效方法吗?如果让事情变得更简单,您可以创建与远程表具有相同架构的本地表。远程表有9列,没有一列是标识列。远程表中大约有5400行,并且这个数字每年增长大约200行。所以不是一张快速更换的桌子。ADO.NET的批量复制功能可能会帮助您熟悉:MSDN-MultipleBulkCopyOperations(ADO.NET)示例文章可能是SqlBulkCopy;使用SqlCommand.ExecuteReader让读取器在调用SqlBulkCopy.WriteToServer时使用。这与批量插入相同,速度非常快。它应该看起来像(未经测试);使用(SqlConnectionconnSource=newSqlConnection(csSource))使用(SqlCommandcmd=connSource.CreateCommand())使用(SqlBulkCopybcp=newSqlBulkCopy(csDest)){bcp.DestinationTableName="SomeTable";cmd.CommandText="myproc";cmd.CommandType=CommandType.StoredProcedure;connSource.Open();使用(SqlDataReader阅读器=cmd.ExecuteReader()){bcp.WriteToServer(阅读器);我先看看使用SQLServerIntegrationServices(SSIS,néeDataTransferServices(DTS))。它专为在数据库之间移动/比较/操作/转换数据而设计,IIRC允许任意表达源。您需要将它安装在数据库上(应该不是问题,它是默认安装的一部分)。否则,给定数据大小(小)的代码解决方案将所有数据从删除系统中提取到内部结构中,然后查找本地不存在的行以插入。您可能无法执行此操作,但如果您无法执行此操作,请不要使用该程序。如果您有任何方式与控制原始服务器的人交谈,请查看他们是否会设置某种数据导出。如果数据像你说的那么小,xml或csv输出比用c#(或任何语言)编写一些东西要好100倍。因此,我们假设它们不能被导出,并且仍然避免编写程序。你说你对目的地有更多的控制权。您可以设置SSIS包或链接服务器吗?如果是这样,您将更容易迁移数据。如果将源设置为链接服务器,则可以编写一个小的t-sql批处理TRUNCATEDestTableINSERTINTODestTableSELECTSourceTable.StarFROM[SourceServer]。[架构]。[Table]不会像SSIS那样好(您对正在发生的事情有更多的了解,但上面的t-sql非常清楚)。因为我不会走编程路线,所以我能给你的最好的解决方案是,如果你绝对必须:使用SqlClient命名空间。所以创建2个SqlConnections,2个SqlCommands,得到1个SqlReader实例。遍历源阅读器,并使用.为每次迭代执行目标SqlCommand插入。它会很丑陋,但它会起作用。似乎不需要同步大量数据。在您描述的条件下(只有SP可以访问远程数据库,没有其他权限),您可以使用MarcGravell的解决方案。如果数据只能增长,现有数据不能改变,可以比较远程和内部数据库的记录数,优化操作;如果远程数据库中没有更改,则不需要复制。以上就是C#学习教程:从一个数据库表复制到另一个C#的全部内容分享,如果对你有用,还需要进一步了解C#学习教程,希望大家多加关注——本篇文章收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: