Sql server 生成表中某些记录的SQL insert语句

Sql server 生成表中某些记录的SQL insert语句,sql-server,excel,vba,sql-server-2008,Sql Server,Excel,Vba,Sql Server 2008,我尝试从SQLServer2008中的现有表自动生成INSERTSQL语句,但我不需要所有记录,只需要其中的一小部分。-->因此,我需要过滤生成的插入。在生成insert SQL语句时添加WHERE子句可以做到这一点,但我不知道如何做到这一点 本文部分回答了我的问题(SSMS内部生成器): 但它会导出表中的所有数据。生成的插入脚本未排序,因此我无法轻松筛选所需的行(繁重的手动工作) 我还尝试了这个存储过程(我还必须更正该过程的一部分,使其能够与SQLServer2008一起工作,并将char(

我尝试从SQLServer2008中的现有表自动生成INSERTSQL语句,但我不需要所有记录,只需要其中的一小部分。-->因此,我需要过滤生成的插入。在生成insert SQL语句时添加WHERE子句可以做到这一点,但我不知道如何做到这一点

本文部分回答了我的问题(SSMS内部生成器):

但它会导出表中的所有数据。生成的插入脚本未排序,因此我无法轻松筛选所需的行(繁重的手动工作)

我还尝试了这个存储过程(我还必须更正该过程的一部分,使其能够与SQLServer2008一起工作,并将char(255)替换为varchar,如前所述)

但它仍然不起作用:我得到以下错误:

Msg 8169,16级,状态2,第6行 从字符串转换为uniqueidentifier时,转换失败


然后,您能告诉我在SQLServer2008中从表的一部分(因此不是表的所有行)自动生成SQLINSERT的最佳方法吗

您可以使用合并语法根据特定条件在表中插入数据 使用“合并”还可以删除和更新表中的数据
在单个sql语句中执行多个操作

我自己找到了一种使用Excel的方法

  • 进行必要的查询,包括SSMS中的WHERE子句
  • 选择所有结果
  • 带页眉的副本
  • 将Excel文件粘贴到第4行第1列下面
  • 宏输出路径中的更改
  • 单元格表名称的更改
  • 启动宏 -->获取生成的文件,并准备好再次插入数据的副本

  • 有一种更简单的方法可以做到这一点,而不必经历excel表格的所有繁琐工作

    这将返回表中的所有数据(很像GUI版本),在表中,右键单击数据库并选择“任务”,然后选择“生成脚本”。 但是,与GUI版本或“导出到excel”版本不同,使用这行代码,您可以在“WHERE”子句中指定一个过滤器,以仅返回特定日期或天数范围内的项目,或者在“WHERE”子句中通常使用的任何其他过滤器

    在下面的代码中,我使用了两个简单的表。一个填充了数据,另一个没有。我想将部分或全部数据从表2传输到表3。同样,我可以按日期或其他列的部分进行筛选。(例如,colB喜欢“ging%”

    这将生成一个“INSERT”语句字符串,这些语句在SQL查询中预先准备好运行

    注意,在运行此操作之前,请将SQL server中的输出显示从“网格”切换到“文本”

    SELECT 'INSERT', + 'INTO', + 'TestTable3', + '(',  + 'colA', + ',', + 'colB', + ',', + 'colDate', + ')', + 'values', + '(', + '''', + CAST(colA AS VARCHAR(10)), + '''', + ',', + '''', + CAST(colB AS VARCHAR(10)), + '''', + ',', + '''', + CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS 'colDate', + '''', + ')', + ';'
    FROM TestTable2
    WHERE colDate LIKE '2018-10-14';
    GO
    
    下面是这将返回的内容的一个片段

    只需将结果复制/粘贴到新查询中并运行即可


    太简单了。

    感谢您提到我以前不知道的Merge,但它没有回答我生成正确Insert语句的问题