首页 > 解决方案 > 在从 SQL Server 中删除之前将 SQL Server 表复制到 txt 文件中

问题描述

我有一个从数据库表中删除一些行的存储过程。我需要在删除操作之前将数据复制到文本文件中,以检查已删除的内容 - 我该怎么做?

我的代码:

DELETE FROM Document
WHERE DocumentID IN (SELECT DISTINCT m.MemberID
                     FROM Member m
                     LEFT JOIN 
                         (SELECT 
                              *,  
                              ROW_NUMBER() OVER (PARTITION BY memberid ORDER BY id DESC) AS rn
                          FROM Insurance) x ON m.MemberID = x.MemberID AND x.rn = 1
                     WHERE 
                         ((x.id IS NULL AND m.LastChangedDateTime < '2019-10-01') 
                          OR x.ResignationDate < '2019-10-01'));

标签: sqlsql-serverstored-procedurescopy

解决方案


使用 SQLCMD,您可以使用以下方法:

  1. 将您的 SELECT 查询保存在一个 sql 文件中,我们将其命名为“myquery.sql”。该查询看起来与您的 DELETE 查询几乎相同,唯一的区别是我们将使用 SELECT 子句而不是 DELETE:
SELECT FROM Document WHERE...
  1. 使用以下 SQLCMD 命令执行查询并将输出导出到 TXT 文件:
sqlcmd -i c:\sql\myquery.sql -o c:\sql\myoutput.txt
  1. 继续删除您的行。或者,您可以为 DELETE 操作复制第 1 步和第 2 步,这样您就可以为 SELECT 操作创建一个 SQL 文件,为 DELETE 操作创建第二个 SQL 文件。

可以通过 CmdExec 作业执行 sqlcmd 命令。只需使用键入“操作系统”(CmdExec)的步骤创建一个作业并在其中键入您的 sqlcmd 命令,然后从存储过程中执行sp_start_job以启动该作业。


推荐阅读