【问题标题】:SQL Server Import table keeping default valuesSQL Server 导入表保持默认值
【发布时间】:2011-02-04 15:12:53
【问题描述】:

我在 SQL Server 2008 中将表从一个数据库导入到另一个数据库,方法是右键单击目标数据库并选择 > 任务 > 导入数据...

当我导入表时,我得到了列名和类型以及所有数据,但我丢失了主键、标识规范和在源表中设置的所有默认值。所以现在我必须再次手动设置每列的所有默认值。有什么方法可以通过导入获取默认值,甚至可以通过查询获取默认值?

我对此非常陌生,并且在黑暗中挣扎,如果这是一个非常愚蠢的问题,请原谅我......

【问题讨论】:

    标签: sql-server import


    【解决方案1】:

    尝试为您的源表生成一个创建脚本,并使用该脚本创建完整的目标表结构。然后使用导入数据向导将数据从源表复制到新创建的表中。

    【讨论】:

      【解决方案2】:

      你可以使用 bcp 命令来完成这项工作,这个命令有一个保持身份不变的开关。

      当您拥有大量数据时,此命令非常有用。

      有关更多信息,请参阅link

      【讨论】:

        【解决方案3】:

        我发现this page (https://www.codeproject.com/Tips/823364/Export-Primary-Unique-Foreign-Key-and-Default-Cons) 上的查询在您需要跨多个表(特别是在“默认约束”标题下)获取默认值时非常有用:

        我在表格名称周围添加了括号,因为我的一些需要被识别:

        SELECT 'ALTER TABLE [' + s.name +'].[' + t.name +'] ADD CONSTRAINT ' +
         d.name + ' default ' + d.definition + ' FOR [' + c.name + '];'
         FROM sys.default_constraints d
         INNER JOIN sys.columns c ON d.parent_object_id = c.object_id
         AND d.parent_column_id = c.column_id
         INNER JOIN sys.tables t ON t.object_id = c.object_id
         INNER JOIN sys.schemas s ON s.schema_id = t.schema_id
        

        【讨论】:

          猜你喜欢
          • 2015-11-11
          • 2014-10-24
          • 1970-01-01
          • 2020-12-11
          • 1970-01-01
          • 2014-08-18
          • 2016-02-20
          • 2021-11-20
          • 2016-03-22
          相关资源
          最近更新 更多