【问题标题】:Changing column order of a table definition using a script使用脚本更改表定义的列顺序
【发布时间】:2026-01-18 21:00:01
【问题描述】:

工作

我需要通过重新排列目标表中的所有字段来修复损坏的 bulkinsert,以便顺序与 bulkinsert 的定义相匹配。

我需要在多个环境中的多个数据库上执行此操作。

我能做什么

手动将字段拖放到正确的位置,这会起作用,但这会非常低效,因为字段完全不匹配。

我想要什么

如果我可以创建一个为我重新排列的 sql 脚本,我的工作会更容易且可重复。

有了一个脚本,我只需要努力一次,并以可靠的方式在所有其他数据库环境中执行它。

有什么想法吗?

【问题讨论】:

  • 所有数据库的表结构是否相同?请发布您当前的结构和所需的列顺序
  • 它们是相同的。实际情况比这复杂一点,但基本上区别是:dev - acc - prod。

标签: sql sql-server database bulkinsert


【解决方案1】:

您需要做的是创建一个包含正确顺序的列的表,从旧表中移动数据,删除旧表并重命名新表。请记住,您需要删除并重新创建旧表上的所有约束。 基本上这就是您使用 GUI 重新排列它们时所做的事情。

【讨论】:

  • 我是按照这些思路思考的,我会看看我能解决什么问题。
【解决方案2】:

选项 1

创建一个格式文件并使用它来导入数据。检查此链接以进一步阅读 - MSDN LINK

选项 2

创建一个从表中选择数据的视图,其中列按所需顺序。现在将数据插入视图而不是表格

选项 3

创建一个脚本来创建一个表的副本,其中的列按所需的顺序排列。将现有数据移至此表。现在放下你的表并重命名副本。

【讨论】:

    最近更新 更多