我正在使用SQL Server 2008 Management Studio,并有一个表,我想迁移到不同的db服务器。
有任何选项导出数据作为插入到SQL脚本??
我正在使用SQL Server 2008 Management Studio,并有一个表,我想迁移到不同的db服务器。
有任何选项导出数据作为插入到SQL脚本??
当前回答
其他回答
在对象资源管理器的SSMS中,右键单击数据库,右键选择“任务”,然后选择“生成脚本”。
这将允许您为单个或所有表生成脚本,其中一个选项是“脚本数据”。如果您将其设置为TRUE,向导将为您的数据生成一个带有INSERT INTO()语句的脚本。
如果使用2008 R2或2012,它被称为其他东西,请参阅下面的截图
2008 R2或更高版本,例如2012
选择“脚本的数据类型”,可以是“仅数据”,“模式和数据”或“仅模式”-默认值)。
然后在Codeplex上有一个“SSMS插件”包(包括源代码),它承诺几乎相同的功能和更多的功能(如快速查找等)。
如果使用SQLServer 2008R2,则需要将“Types of data”设置为“script”字段。
在搜索了很多之后,这是我最好的选择:
如果您有大量数据,需要一个紧凑而优雅的脚本,可以试试:SSMS Tools Pack
它生成一个所有选择语句的联合,将项目插入到目标表中,并很好地处理事务。
截图
对于那些寻找命令行版本的人来说,微软发布了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
dbatools。io是一个基于PowerShell的更加活跃的项目,它提供了Get-DbaDbTable和Export-DbaDbTableData cmdlet来实现这一点:
PS C:\> Get-DbaDbTable -SqlInstance sql2016 -Database MyDatabase \
-Table 'dbo.Table1', 'dbo.Table2' |
Export-DbaDbTableData -Path C:\temp\export.sql
以上都很好,但如果你需要
使用连接从多个视图和表导出数据 为不同的rdbms创建插入语句 将数据从任意RDBMS迁移到任意RDBMS
那么下面的技巧是唯一的方法。
首先学习如何从源db命令行客户端创建spool文件或导出结果集。 第二,学习如何在目标db上执行sql语句。
最后,通过在源数据库上运行sql脚本,为目标数据库创建插入语句(以及任何其他语句)。 如。
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创建的,其中需要使用dual进行无表选择。
结果集将包含目标db的脚本。