我使用SQL Server 2008 Management Studio中,有一个表格我想迁移到不同的数据库服务器。
是否有任何选项,将数据导出为INSERT INTO SQL脚本?
我使用SQL Server 2008 Management Studio中,有一个表格我想迁移到不同的数据库服务器。
是否有任何选项,将数据导出为INSERT INTO SQL脚本?
在SSMS的对象资源管理器中,右键单击数据库,单击鼠标右键,选择“任务”,然后选择“生成脚本”。
这将允许您生成单个或全部表,其中的一个选项是“脚本数据”的脚本。 如果设置为TRUE,向导将生成与您的数据插入()语句的脚本。
如果使用2008 R2或2012年它被称为别的东西,见下面的这一个屏幕截图
选择“数据类型的脚本”,它可以是“仅数据”,“架构和数据”或“仅架构” - 默认值)。
然后还有一个“ SSMS外接 Codeplex上(包括源)”套餐并承诺几乎相同的功能,还有一些人(如快速查找等)
对于过明确brainlessness起见,继marc_s的指示在这里 ...
在SSMS的对象资源管理器,右击数据库上单击鼠标右键,选择“任务”,然后选择“生成脚本”。
......然后我看到一个向导屏幕“ 介绍,选择对象,设置脚本选项,总结,并保存或发布脚本 ”在底部与上一个,下一个,完成,取消按钮。
在设置脚本选项一步 ,你必须点击“高级”与选项来获取页面。 然后, Ghlouw已经提到的,你现在选择“数据类型脚本”和利润。
如果你使用它的SQLServer 2008R2你需要的数据类型设置为脚本场。
如果您正在运行SQL Server 2008 R2内置在执行此操作的SSMS如上所述marc_s选项改了一下。 相反,选择的Script data = true
表明了他的图表中,现在有一个新的名为选项"Types of data to script"
略高于“表格/视图选项”分组。 在这里,您可以选择仅只有脚本数据,架构和数据或模式。 奇迹般有效。
对于那些寻找一个命令行版本,微软发布了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
他们的功能列表:
它于2008年SSMS开发,不支持在这个时候,2005年版(推出)
出口数据快速T-SQL的MSSQL和MySQL语法
CSV,TXT,XML也支持! 线束全部潜力,力量和速度SQL所提供的。
不要等到访问或Excel来为你做脚本的工作,可能需要几分钟的事 - 让SQL服务器为你做它,并把所有的猜测工作导出您的数据!
自定义您的数据输出进行快速备份,DDL操作,以及更多...
表名和数据库模式更改为您的需求,快速,高效地
出口列名或干脆不生成的名称的数据。
你可以选择单独的列脚本。
你可以选择数据的子集(WHERE子句)。
你可以选择数据的排序(ORDER BY子句)。
对于需要数据处理那些肮脏的数据库调试操作大的备份工具。 而实验不会丢失数据。 操作上飞的数据!
所有上述是好的,但如果你需要
那么下面的诀窍是不二法门。
首先学习如何从源数据库命令行客户端创建假脱机文件或导出结果集。 其次学习如何在目标数据库执行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的分贝其中需要对表较少选择使用双的创建。
结果集将包含目标DB的脚本。
下面是一个使用光标来迭代源表创建数据迁移脚本的一个例子。
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'
对于SQL Server MNG工作室2016年
搜索了很多之后,这是我最好的拍摄:
如果你有大量的数据,需要一个小巧精美的脚本,试试吧: SSMS工具包
它会产生一个UNION ALL SELECT语句将项目插入目标表和处理事务相当不错。
截图