批处理脚本,用于解析output.txt并根据output.txt中的行获取新的sql脚本

时间:2013-11-15 15:18:01

标签: sql batch-file

以下是output.txt文件:

Changed database context to 'MY_DB'.
name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
UserDomains                                                                                                                     
ApprovalConfiguration                                                                                                           
ApprovalLevelRoles                                                                                                              
CreditCardHolderTitle                                                                                                           
ApprovalRole                                                                                                                    

(22 rows affected)
name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
ApprovalConfigurationDelete                                                                                                     
ApprovalConfigurationInsert                                                                                                     
ApprovalConfigurationSelect                                                                                                     
ApprovalConfigurationsSelectAll                                                                                                 


(103 rows affected)

以下是SQL TABLES的名称

UserDomains                                                                                                                     
ApprovalConfiguration                                                                                                           
ApprovalLevelRoles                                                                                                              
CreditCardHolderTitle                                                                                                           
ApprovalRole 

......这个是商店程序的名称

ApprovalConfigurationDelete                                                                                                     
ApprovalConfigurationInsert                                                                                                     
ApprovalConfigurationSelect                                                                                                     
ApprovalConfigurationsSelectAll  

我想以某种方式区分表和存储过程。 批处理脚本应该能够生成一个SQL文件并为每行表填充它并从output.txt存储过程

所以最后新的SQL文件应该是这样的:

-- TABLES
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'UserDomains', @type = N'logbased'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalConfiguration', @type = N'logbased'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalLevelRoles', @type = N'logbased'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'CreditCardHolderTitle', @type = N'logbased'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalRole', @type = N'logbased'
GO

-- STORE PROCEDURES
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalConfigurationDelete', @type = N'proc schema only'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalConfigurationInsert', @type = N'proc schema only'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalConfigurationSelect', @type = N'proc schema only'
GO
exec sp_addarticle @publication = N'$(PublicationName)', @article = N'ApprovalConfigurationsSelectAll', @type = N'proc schema only'
GO

先谢谢你们的帮助!

Sero

1 个答案:

答案 0 :(得分:0)

下面的批处理文件执行您想要的除法,只需完成输出详细信息。

@echo off
setlocal EnableDelayedExpansion

for /F %%a in (output.txt) do (
   set "line=%%a"
   if "!TABLE!" equ "true" (
      if "!line:~0,1!" neq "(" (
         echo TABLE: !line!
      ) else (
         set TABLE=false
      )
   ) else if "!PROC!" equ "true" (
      if "!line:~0,1!" neq "(" (
         echo PROC: !line!
      ) else (
         set PROC=false
      )
   ) else if not defined TABLE (
      if "!line:~0,1!" equ "-" (
         set TABLE=true
         echo -- TABLES
      )
   ) else if "!line:~0,1!" equ "-" (
      set PROC=true
      echo -- STORE PROCEDURES
   )
)