我正在使用SQL Server 2008 Management Studio,并有一个表,我想迁移到不同的db服务器。

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


当前回答

在搜索了很多之后,这是我最好的选择:

如果您有大量数据,需要一个紧凑而优雅的脚本,可以试试:SSMS Tools Pack

它生成一个所有选择语句的联合,将项目插入到目标表中,并很好地处理事务。

截图

其他回答

在搜索了很多之后,这是我最好的选择:

如果您有大量数据,需要一个紧凑而优雅的脚本,可以试试:SSMS Tools Pack

它生成一个所有选择语句的联合,将项目插入到目标表中,并很好地处理事务。

截图

如果使用SQLServer 2008R2,则需要将“Types of data”设置为“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

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

为了过于明确的无脑,在听从marc_s的指示到这里之后…

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

... 然后我看到一个向导屏幕,上面有“介绍、选择对象、设置脚本选项、摘要和保存或发布脚本”,底部有“上一步”、“下一步”、“完成”和“取消”按钮。

在Set Scripting Options步骤中,您必须单击“Advanced”以获得带有选项的页面。然后,正如Ghlouw提到的,您现在选择“要脚本的数据类型”并获利。

以上都很好,但如果你需要

使用连接从多个视图和表导出数据 为不同的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的脚本。