Answers:
在对象资源管理器的SSMS中,右键单击数据库,右键单击并选择“任务”,然后选择“生成脚本”。
这将允许您为单个或所有表生成脚本,并且选项之一是“脚本数据”。如果将其设置为TRUE,向导将为您的数据生成一个带有INSERT INTO()语句的脚本。
如果使用的是2008 R2或2012 R2,则称为其他名称,请参见下面的截图
选择“脚本的数据类型”,可以是“仅数据”,“模式和数据”或“仅模式”-默认值)。
然后在Codeplex上有一个“ SSMS Addin ”包(包括源代码),它承诺几乎相同的功能以及更多功能(例如快速查找等)。
为了过分明了的无脑,在遵循marc_s的指令之后, ...
在对象资源管理器中的SSMS中,右键单击数据库,右键单击并选择“任务”,然后选择“生成脚本”。
...然后,我看到一个向导屏幕,底部有“ 简介,选择对象,设置脚本选项,摘要以及保存或发布脚本 ” ,并带有上,下,结束,取消按钮。
在“ 设置脚本选项”步骤上,您必须单击“高级”以获取带有选项的页面。然后,正如Ghlouw所述,您现在选择“要编写脚本的数据类型”并获利。
如果使用SQLServer 2008R2,则需要将数据类型设置为脚本字段。
对于那些正在寻找命令行版本的用户,Microsoft 发布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
您还可以从以下位置签出SQL Server Management Studio 2008的“数据脚本加载项”:
http://www.mssql-vehicle-data.com/SSMS
它们的功能列表:
它是在SSMS 2008上开发的,目前暂时不支持2005版本(很快!)。
快速将数据导出到T-SQL以获取MSSQL和MySQL语法
还支持CSV,TXT,XML!利用SQL必须提供的全部潜能,功能和速度。
不要等待Access或Excel为您完成脚本工作,这可能要花几分钟的时间-让SQL Server为您完成脚本工作,并从导出数据中排除所有猜测工作!
自定义您的数据输出,以进行快速备份,DDL操作等。
快速有效地更改表名和数据库模式
导出列名称或仅生成不带名称的数据。
您可以选择单个列来编写脚本。
您可以选择数据子集(WHERE子句)。
您可以选择数据排序(ORDER BY子句)。
出色的备份实用程序,用于那些需要数据处理的繁琐的数据库调试操作。实验时不要丢失数据。即时处理数据!
以上所有都是不错的,但是如果您需要
那么以下诀窍是唯一的方法。
首先,学习如何从源db命令行客户端创建假脱机文件或导出结果集。其次,学习如何在目标数据库上执行sql语句。
最后,通过在源数据库上运行sql脚本,为目标数据库创建insert语句(和其他任何语句)。例如
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数据库创建的,其中无表选择需要使用double。
结果集将包含目标数据库的脚本。
这是一个使用游标迭代源表来创建数据迁移脚本的示例。
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'