SQL Server等效于MySQL Dump,为表中的所有数据生成插入语句

时间:2011-03-07 22:14:54

标签: sql-server

我有一个应用程序使用SQL Server数据库和几个数据库实例... test,prod等...我正在进行一些应用程序更改,其中一个更改涉及从nvarchar更改列(最大值)到nvarchar(200),以便我可以添加一个唯一的约束。 SQL Server告诉我,这需要删除表并重新创建它。

我想整理一个脚本,它将执行表删除,使用新架构重新创建它,然后重新插入之前一次性的数据,如果可能的话,只是为了让事情变得简单易用将此更改迁移到生产中。

可能有一个很好的SQL Server方法可以做到这一点,但我只是没有意识到这一点。如果我使用Mysql,我会mysqldump表及其内容,并使用它作为我的脚本将该更改应用于生产。我在SQL服务器中找不到任何导出功能,它将为我提供一个文本文件,其中包含表中所有数据的插入。

2 个答案:

答案 0 :(得分:6)

使用SQL Server的Generate Scripts命令

  • 右键单击数据库;任务 - >生成脚本
  • 选择您的表格,然后点击下一步
  • 点击“高级”按钮
  • 查找脚本的数据类型 - 选择架构和数据。
  • 然后您可以选择保存到文件,或者放入新的查询窗口。
  • 为项目符号2中选择的所有表格数据生成INSERT个语句。

SQL Server Generate Scripts Data

答案 1 :(得分:2)

无需编写脚本

这里有两种方式

1使用alter table ....alter column.....

示例..您必须一次执行1列

create table Test(SomeColumn nvarchar(max))
go

alter table Test alter column SomeColumn nvarchar(200)
go

在转换列

时转储到新表中
select <columns except for the columns you want to change>, 
    convert(nvarchar(200),YourColumn) as YourColumn
into SomeNewTable
 from OldTable

删除旧表

将此表重命名为与旧表

相同的表
EXEC sp_rename 'SomeNewTable', 'OldTable';

现在添加你的索引