转储SQL Server插入数据

时间:2009-05-01 14:32:18

标签: sql-server-2005 dump

是否有免费工具允许您将MS-SQL Express(2005)表的数据(而不是结构)作为INSERT语句转储到平面文件中?

This商业产品似乎做了我的想法。我尝试使用SqlDump,但我的完整服务器名称不适合其SQL Server名称字段。

6 个答案:

答案 0 :(得分:3)

您需要做的是

  1. 右键点击管理工作室中的数据库
  2. 选择任务 - >生成脚本
  3. 中选择您想要数据的表格
  4. 在下一步中点击高级并将“数据类型设置为脚本”设置为仅数据(或您需要的任何内容)
  5. 适用于sql serfver 2008 r2。 在以前版本的sql server中,它类似于“脚本数据”,你设置为true。

答案 1 :(得分:2)

tablediff是MS SQL Server附带的免费工具。只要您的源是要从中生成插入的表,并且您有另一个要生成插入的空表,它就会创建您正在寻找的文件。

BCP可能是用于移动数据的实用程序的更好选择 - 但它不会像您正在寻找的那样生成实际的DML插入语句。

我还要查看数据库发布向导。我没有使用过它,但它应该能够编写你的模式和数据的脚本 - 从那里你可以将它生成的脚本切割成你想要的。

有关tablediff实用程序的更多信息,请参阅this link

有关下载数据库发布向导的信息,请参阅this link

答案 2 :(得分:1)

我认为This会对你有用,但你必须为每张桌子运行它。

答案 3 :(得分:1)

我知道这不是你的想法,而且建议的工具看起来很有希望,但如果数据从一个SQL Server发送到另一个,那么低开销的替代方案就是使用bcp。以下重要选项包括-E用于保留身份信息,-n用于使用本机格式。执行第一个语句会让构建一个批处理文件将所有数据转储到文件,第二个语句将创建bcp ins。

Select 'bcp ' + Table_Catalog  + '..' + 
Table_Name + ' out ' + Table_Name 
+ '.bcp  -S ServerName -U userid -P password -n '
from information_schema.tables 
where table_type = 'BASE TABLE'

Select 'bcp ' + Table_Catalog  + '..' + Table_Name 
+ ' in .\' + Table_name + 
'.bcp  -S .\ -U userid -P password -n -E '
from information_schema.tables 
where table_type = 'BASE TABLE'

示例输出

bcp out命令

bcp master..tblDepartments out tblDepartments.bcp  -S ServerName -U
userid -P password -n 

bcp in command

bcp master..tblDepartments in .\tblDepartments.bcp  -S .\ 
-U userid -P password -n -E 

答案 4 :(得分:0)

答案 5 :(得分:0)

尝试免费的SSMS Tools Pack,它是SSMS和SSMS Express的加载项。它使您能够为表,dte整个数据库或仅查询结果生成插入脚本。