导出数据在SQL Server中作为INSERT INTO

我正在使用SQL Server 2008pipe理工作室,并有一个表我想迁移到不同的数据库服务器。

有没有任何选项将数据作为插入导出到SQL脚本?

在对象资源pipe理器中的SSMS中,右键单击数据库,右键单击并select“任务”,然后select“生成脚本”。

这将允许您为单个或所有表生成脚本,其中一个选项是“脚本数据”。 如果将其设置为TRUE,向导将为您的数据生成一个使用INSERT INTO()语句的脚本。

如果使用2008 R2或2012,则称其为“其他”,请参阅下面的截图

替代文字

2008 R2或更高版本,例如2012

select“要脚本的数据types”,可以是“仅数据”,“架构和数据”或“架构只” – 默认)。

在这里输入图像描述

然后在Codeplex上有一个“ SSMS Addin ”包(包括源码),它承诺几乎相同的function和一些(比如快速查找等)

替代文字

为了明确无脑,在遵循marc_s的指示之后…

在对象资源pipe理器中的SSMS中,右键单击数据库,右键单击并select“任务”,然后select“生成脚本”。

…然后,我会看到一个向导屏幕,其中带有“ 简介,select对象,设置脚本选项,摘要和保存或发布脚本 ”,底部是prev,next,finish,cancelbutton。

在“ 设置脚本选项”步骤中 ,您必须单击“高级”以获取包含选项的页面。 然后,正如Ghlouw所说,你现在select“脚本数据types”并获利。

高级按钮突出显示红色!1!

如果使用SQLServer 2008R2,则需要将数据types设置为脚本字段。

在这里输入图像描述

如果您正在运行SQL Server 2008 R2,则在SSMS中执行此操作的内置选项会像上面介绍的marc_s所做的更改一些。 如图所示,不是selectScript data = true ,而是在“Table / View Options”分组的上方新增了一个名为"Types of data to script"的新选项。 在这里,您可以select仅脚本数据,架构和数据或模式。 奇迹般有效。

以上所有都很好,但如果你需要的话

  1. 使用连接从多个视图和表中导出数据
  2. 为不同的RDBMS创build插入语句
  3. 将数据从任何RDBMS迁移到任何RDBMS

那么下面的技巧是唯一的方法。

首先学习如何从源数据库命令行客户端创build假脱机文件或导出结果集。 其次学习如何在目标数据库上执行sql语句。

最后,通过在源数据库上运行一个sql脚本来为目标数据库创build插入语句(和任何其他语句)。 例如

 SELECT '-- SET the correct schema' FROM dual; SELECT 'USE test;' FROM dual; SELECT '-- DROP TABLE IF EXISTS' FROM dual; SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual; SELECT '-- create the table' FROM dual; SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual; SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1; 

上面的例子是为Oracle的数据库创build的,其中对于无表格select需要双重使用。

结果集将包含目标数据库的脚本。

您还可以从以下位置查看SQL Server Management Studio 2008的“Data Scripter插件”:

http://www.mssql-vehicle-data.com/SSMS


他们的function列表:

  • 它是在SSMS 2008上开发的,目前不支持2005版本(很快!)

  • 将数据快速导出到MSSQL和MySQL语法的T-SQL

  • CSV,TXT,XML也支持! 利用SQL提供的全部潜力,function和速度。

  • 不要等待Access或Excel为您做脚本工作,这可能需要几分钟的时间 – 让SQL Server为您做,并将所有的猜测工作从导出您的数据!

  • 自定义您的数据输出以进行快速备份,DDL操作等等…

  • 根据需要快速高效地更改表名和数据库模式

  • 导出列名或只是生成没有名称的数据。

  • 您可以select单个列来编写脚本。

  • 您可以select数据的子集(WHERE子句)。

  • 您可以select数据sorting(ORDER BY子句)。

  • 对于那些需要数据操作的蹩脚数据库debugging操作来说,它是一个很棒的备份工具 试验时不要丢失数据。 随时操作数据!

以下是使用游标创build数据迁移脚本以迭代源表的示例。

 SET NOCOUNT ON; DECLARE @out nvarchar(max) = '' DECLARE @row nvarchar(1024) DECLARE @first int = 1 DECLARE cur CURSOR FOR SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')' FROM CV_ORDER_STATUS ORDER BY [Stage] PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON' PRINT 'GO' PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES'; OPEN cur FETCH NEXT FROM cur INTO @row WHILE @@FETCH_STATUS = 0 BEGIN IF @first = 1 SET @first = 0 ELSE SET @out = @out + ',' + CHAR(13); SET @out = @out + @row FETCH NEXT FROM cur into @row END CLOSE cur DEALLOCATE cur PRINT @out PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF' PRINT 'GO' 

对于那些正在寻找这个命令行版本的人,微软发布了mssql-scripter来做到这一点:

 $ pip install mssql-scripter # Generate DDL scripts for all database objects and DML scripts (INSERT statements) # for all tables in the Adventureworks database and save the script files in # the current directory $ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \ -f './' --file-per-object