SQL Server 2005-以编程方式导出表(运行.SQL文件以重新生成它)

SQL Server 2005-以编程方式导出表(运行.SQL文件以重新生成它),sql,sql-server,sql-server-2005,database-table,Sql,Sql Server,Sql Server 2005,Database Table,我有一个带有表的数据库,表中的客户有一些数据 我办公室里还有一个数据库,所有东西都是一样的,但我的客户表是空的 我怎样才能在SQLServer2005(T-sql)中创建一个sql文件,从第一个数据库中获取表中的所有内容,创建一个,比如buildcustomers.sql,我压缩该文件,在网络上复制它,在我的SQLServer中执行它,瞧!我的餐桌客满了 如何对整个数据库执行相同操作?您始终可以将数据从Customers表导出到Excel文件,然后将该数据导入Customers表 要导入/导出

我有一个带有表的数据库,表中的客户有一些数据

我办公室里还有一个数据库,所有东西都是一样的,但我的客户表是空的

我怎样才能在SQLServer2005(T-sql)中创建一个sql文件,从第一个数据库中获取表中的所有内容,创建一个,比如buildcustomers.sql,我压缩该文件,在网络上复制它,在我的SQLServer中执行它,瞧!我的餐桌客满了


如何对整个数据库执行相同操作?

您始终可以将数据从Customers表导出到Excel文件,然后将该数据导入Customers表

要导入/导出数据,请执行以下操作:

  • 右键单击数据库
  • 转到任务
  • 转到导入数据导出数据
  • 将数据源更改为Microsoft Excel
  • 跟随向导

  • 如果两个数据库位于同一个SQL Server实例中,即使用相同的连接,则此SQL可能会有所帮助:

    INSERT INTO [DestinationDB].[schema].[table] ([column])
    SELECT [column] FROM [OriginDB].[schema].[table]
    GO
    
    bcp
    (从命令行)用于网络文件,然后将其还原

    e、 g

    • -N使用本机类型
    • -不要使用受信任的连接
    • -服务器名

    非常快速且易于嵌入到代码中。(我已经围绕这个命令构建了一个数据库备份(还原)系统。

    此功能已经内置到Sql Server Management Studio 2008中

    只需下载并只安装客户端工具(不会过期)。使用ManagementStudio 2008连接到您的2005数据库(向后兼容)

  • 右键单击数据库
  • 选择任务生成脚本
  • 按“下一步”,再次选择数据库
  • 在“选择脚本选项”屏幕上,有一个名为脚本数据的选项,它将为所有数据生成SQL insert语句
  • (注意:对于SQL Server Management Studio 2008 R2,该选项称为“要编写脚本的数据类型”,是常规部分中的最后一个选项。选项为“仅数据”、“架构和数据”和“仅架构”)


    对于SQL server 2005中作为SQL脚本的数据导出器


    我只想为Sql Server Management Studio 2008添加一些屏幕快照。使用前面描述的步骤是正确的。当您有“生成和发布脚本”->“设置脚本选项”时,请按“前进”查看脚本选项:

    ![在何处查找高级脚本选项]:图像丢失,因为我没有合适的声誉:(

    对于Sql Server Management Studio 2008,包含数据的选项为“要编写脚本的数据类型”


    ![要编写脚本的数据类型]:图像丢失,因为我没有正确的声誉:(

    您可以查看以下文章,了解如何使用SQL Server本机工具和第三方工具来完成此操作:

    免责声明:我作为支持工程师为ApexSQL工作


    希望这有帮助

    哦,这太完美了。可编写脚本,灵活,支持良好,速度非常快。谢谢!另请参阅一个脚本,该脚本将为每个表生成一个调用bcp的批处理文件。这对我来说非常有用。不过,我建议使用-E修改导入命令以处理标识列,使用-q引用标识符。使用-E可以确保插入了正确的标识值。如何在多个表上执行?感谢您指出R2更改!其他人的问题:模式是默认值,如果您更改目标对象,它将重置为默认值。太棒了。这正是我所寻找的!这是一个很好的答案。值得注意的是,他们使用了它,而不是“脚本数据”设置为“True”您必须将“要编写的数据类型”设置为“Schema and data”仅供记录,Microsoft在这方面非常糟糕。他们提供了我所接触过的最糟糕的数据库工具和接口,我真的很同情任何不得不使用这种废话的人。说真的,我们必须“生成”而不是“导出”?值得注意的是,在SQL MGMT 2008中,选项屏幕上的“高级”按钮是数据的选项所在,您可以使用where子句运行scrip吗?昨天有一个关于这一点的讨论,最好的解决方案是。如果您使用的是Visual Studio 2008 Team Edition for Database Professionals,则可以通过一个简单的向导完成此操作:a另一种方法是使用Redgate优秀的SqlCompare工具来选择特定的表来编写数据脚本,尝试一下这对我来说不起作用。我使用了“从oldtablename选择*到newtablename”,如此线程所示()
    bcp "SELECT * FROM CustomerTable" queryout "c:\temp\CustomerTable.bcp" 
         -N -S SOURCESERVERNAME -T 
    
    bcp TargetDatabaseTable in "c:\temp\CustomerTable.bcp" -N -S TARGETSERVERNAME -T