【问题标题】:How to use BULK INSERT to move data between two tables?如何使用 BULK INSERT 在两个表之间移动数据?
【发布时间】:2016-11-17 13:46:54
【问题描述】:

如何使用 BULK INSERT 在两个表之间移动数据?我找不到带有示例的教程。我有 1000 万条记录要移动。 SQL Server 2012 SP3。这是一次行动。我不能使用 cmdshell,我不能使用 SSIS。我必须分批移动数据。这将是一项夜间工作。我说“移动”,但我不必删除源中的记录。目标表已经存在,我不需要检查一些约束和没有外键。

【问题讨论】:

  • 请提供有关该问题的更多详细信息
  • 当我有源表和目标表时,我没有关于如何使用批量插入的示例。我不能使用 bcp。我必须移动大约 1000 万行。
  • SQL-Server 的哪个版本?一次性动作还是自动多动作?相同的服务器还是不同的服务器?相同的网络还是不同的网络?请提供更多详细信息!
  • 为什么是BULK INSERT?您是否只想知道将数据从一个表复制到另一个表的最快方法,而不管方法如何?

标签: sql-server bulkinsert


【解决方案1】:

将数据从一个数据库转移到另一个数据库非常容易,只要两者都位于同一服务器中(正如您编写的那样)。

当您想要使用脚本并且想要将记录从一个表复制到另一个表时,您可以使用以下方法:

INSERT INTO TargetDB.dbo.TableName(col1,col2,col3...) 
SELECT col1,col2, col3 ... FROM SourceDB.dbo.TableName

这会将所有行从这里复制到那里。

在您的问题中,您没有提供足够的信息,但您想使用 脚本。以上是脚本...

  • 如果您有现有数据,您应该阅读MERGE
  • 如果 Target 和 Soure 的结构不同,您可以轻松调整 SELECT 以准确返回您需要插入的集合
  • 如果不需要复制所有行,只需添加WHERE 子句
  • 如果您连接的用户没有必要的权限,请询问管理员。但是 - 从你的问题或评论 - 我认为,无论如何这将由管理员应用......
  • 如果数据库位于两台不同的服务器中,您可能会阅读linked server
  • 最后,您可能会读到 import and export,它受到 SSMS 的广泛支持...

【讨论】:

  • Shnugo,我必须迁移 1500 万行。我必须分批使用脚本。
  • 虽然 free-of-user-nightly-job 可以一次性完成... 1500 万是相当多的,但不会超出范围...如果您需要拆分它,您可以轻松地使用任何类型的过滤器来构建适当的块并在循环中移动它们。如果您需要这方面的帮助,请提出一个新问题。尝试询问实际问题,而不是(仅)询问您认为最好的方法。 BULK INSERT(可能)根本不需要...尽量避免XY-Problem。如果 this answer 解决了 this question 请接受
  • 你的回答并没有解决我的问题,也许你是对的,这是一个 XY 问题行为。
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多