C# 将数据从SQL批量传输到SQL(维护关系)

C# 将数据从SQL批量传输到SQL(维护关系),c#,sql-server,database,C#,Sql Server,Database,因此,我们目前需要将数据从3个独立的系统提取到3个“暂存数据库”中。这些暂存数据库共享相同的表布局 填充所有3个暂存数据库后,提取工具将获取数据,对其进行验证,并将其移动到“最终”数据库,并保持关系 目前大约有8个表,每个表大约有10万行。所以没有太多的数据。然而,转移需要相当长的时间 数据的一个例子是博客文章到标签,表如下: - Blog Post -- ID - Tags -- ID - Blog Post Tags -- Blog ID -- Tag ID 因此,在提取数据时,我们需

因此,我们目前需要将数据从3个独立的系统提取到3个“暂存数据库”中。这些暂存数据库共享相同的表布局

填充所有3个暂存数据库后,提取工具将获取数据,对其进行验证,并将其移动到“最终”数据库,并保持关系

目前大约有8个表,每个表大约有10万行。所以没有太多的数据。然而,转移需要相当长的时间

数据的一个例子是博客文章到标签,表如下:

- Blog Post
-- ID

- Tags
-- ID

- Blog Post Tags
-- Blog ID
-- Tag ID
因此,在提取数据时,我们需要保持关系,即使ID会改变。因此,
Insert(如果不存在)Post,Get ID
Insert(如果不存在)标记,Get ID
Insert Blog Post标记,带有ID

目前我正在使用LLBLGen实体,获取10000个
博客帖子标签
,检查
帖子
是否存在,如果不存在
插入
,以及
标签
是否存在。 但是由于每个
博客帖子标签都有大量的查询,这需要花费相当长的时间

我尝试过的另一种方法是
执行所有博客帖子
执行所有标签
,然后执行所有
博客帖子标签
。但是,如果任务失败,则不允许重新运行该任务(因为前面的方法将在传输过程中删除每个
博客帖子标记

我们使用的是C#3.5、SQL 2008、LLBLGen 2.6(但是可以改变这一点)


P> >什么是最好的方法?

< P>个人,我会用SSIS做一些事情,或者使用一个导出文件并通过批量复制导入。这是你最好的速度押注。你可以考虑的是设置日志传送来保持你的分级数据库与LIFE同步,但我不确定是否会满足你的要求。要求


---很抱歉,在重新阅读您的帖子后,我意识到分离的系统可能不是SQL Server…--

我相信有很多方法可以加快这一速度,比如使用生产者-消费者模型和多线程操作…我相信您会因为必须获取数据而陷入困境,检查是否存在,然后写入…如果所有3个操作都可以同时进行可能会节省时间…检查并行linq的东西和新的.net 4并行库…是的,我正在运行多个线程,通常每个线程10个,每个线程1000个,这提高了速度,但仍然不能接受。我将检查并行linq为什么ID在更改?因为您已经在最终dat中有数据abase?或者3个暂存数据库之间存在潜在冲突?因为它们是基于种子的主键。因此最终数据库中会有冲突(或者我可以想象)