当前位置: 首页 > 面试题库 >

SqlBulkCopy插入顺序

伍成仁
2023-03-14
问题内容

要将数据从一个数据库复制到具有相同架构的不同服务器中的另一个数据库,我计划使用C
Sharp库中的SqlBulkCopy类。插入记录时,SqlBulkCopy是否将保持与数据表中相同的顺序?

示例:id是标识列。

服务器1,db1

TableA
id   name
1    name10
2    name20
3    name30
4    name40

服务器2,db1

TableA
    id   name
    1    name1
    2    name2
    3    name3
    4    name4
    ..........
    ..........
    5000 name22
    5001 name33
  • 步骤1: var dt = select * from server1.dbo.TableA order by id;
  • 步骤2:将SQL批量复制到server2 bulkCopy.WriteToServer(dt);
  • 第3步:var resultDt = select top 4 id from server2.dbo.TableA order by id desc.由于我们知道插入的记录数,因此我使用的是“前4名”。
  • 第4步: resultDt.DefaultView.Sort = "id asc";

问题: resultDt中的id是否将代表所有行中dt中的id?IE,。

5002 from server2 = 1 from server1
5003 from server2 = 2 from server1
5004 from server2 = 3 from server1
5005 from server2 = 4 from server1

注意:仅出于举例目的,我给出的记录较少。实际表包含数千个记录。


问题答案:

批量插入时似乎无法保证订单。因此,我在目标表中添加了一个临时ID列。流程如下:

Step1: var dt = select *, id as tempId from server1.dbo.TableA order by id;
Step2: SQL bulk copy into server2 bulkCopy.WriteToServer(dt);
Step3: var resultDt = select top 4 id, tempId from server2.dbo.TableA order by id desc. Since we know the number of records we inserted I am using "top 4".

现在,id将是由server2生成的新ID,而tempId将是来自server1的ID。问题解决了 :)



 类似资料:
  • 问题内容: 如何以以下方式将值插入表(MySQL): 在表的所有行上,按ID列(PK)的顺序,在“ num”列中插入递增数字? 例如,如果表有3行,其ID为1,5,2,我希望ID 1获得num = 1,ID 2获得num = 2,ID 5获得num = 3。 编辑 我将解释为什么(我认为)需要这样做: 我试图将表中的列拆分为具有1对1关系的单独表。我以为我可以按ID的顺序获取所有值,然后将它们插入

  • 问题内容: 我想将一个键,值对添加到哈希表(或任何其他集合)中,但必须保持插入顺序。我怎样才能做到这一点? 就像我将1作为键“ 1”添加为值,将2作为键并将“ 2”添加为值。 输出应为: 问题答案: 以下是一些重要实现的特征差异: :“具有可预测的迭代顺序,通常是将键插入映射 的顺序 ( 插入顺序 )。” :“不保证地图的顺序” :“根据其键的自然顺序或按” 即是一个 因此,在这种情况下,您需要的

  • 问题内容: 我们已经为此苦苦挣扎了几天,并在网络上进行了大量搜索。 我们试图弄清楚条目如何以Django形式保存到许多字段。 例如,我们有一个新闻模型,该模型与图像具有多对多的关系。当我们将图像添加到新闻文章中时,例如ID为10、2、14的图像,我们可以看到保存新闻文章表单时的帖子值如下: photos 10 photos 2 photos 14 当我们查看多对多交叉表时,顺序没有保留。我们看不到

  • 问题内容: 以下代码以相同的插入顺序为我提供了输出。我阅读了Javadoc,他们甚至没有谈论插入顺序。有人可以帮助我获取正确的信息。 问题答案: 不,不是的。要保留插入顺序,请改用(javadoc)。 而且,现在优先于,因为它具有不必要的并发开销。(请参见HashMap和Hashtable之间的区别?。)

  • 问题内容: 我在Oracle中有两个表,作业和参考。 我想在两个表中插入一条新记录,并使用从序列中生成的键。就像是: 当然,这导致: 有没有不使用PL / SQL的方法?我非常喜欢仅使用SQL来做到这一点。 问题答案: 您可以为此使用多表插入语法的副作用: SQL小提琴。 从限制: 您不能在多表插入语句的任何部分中指定序列。多表插入被视为单个SQL语句。因此,对NEXTVAL的第一个引用将生成下一

  • 问题内容: 为什么某些集合数据结构不能保持插入顺序?与保持插入顺序相比,有什么特别的事情?如果不维持订单,我们会有所收获吗? 问题答案: 性能。如果您想要原始的插入顺序,则可以使用LinkedXXX类,它们在插入顺序中维护着一个附加的链表。大多数时候,您都不在乎,因此您使用HashXXX,或者想要自然订单,因此您使用TreeXXX。在这两种情况下,您为什么都要支付链接列表的额外费用?