批量数据验证(带平面文件检查器) 
有时需要验证许多类似的数据文件,而这无法通过平面文件检查器的GUI完成。但是,使用控制台版本 (FlaFi.exe) 可以轻松解决。
引言
在之前的文章中,我提到可以使用命令行进行使用平面文件检查器进行数据验证。
Chris Ellison编写了一个基于VBScript的优秀解决方案 (下载),它允许使用不同的平面文件检查器模式验证多个数据文件,具体取决于文件名的前缀。
如果您想自动化数据验证过程,此脚本可以用作灵感来源。
背景
有时,需要验证许多类似的数据文件,而这无法通过平面文件检查器的GUI完成。但是,使用控制台版本 (FlaFi.exe) 可以轻松解决。
主控制台令牌是您可以传递给控制台应用程序的参数
- -silent- 在不回显到控制台窗口的情况下执行模式,并在验证完成后关闭控制台。
- -errors- 将数据错误回显到控制台窗口。
自定义令牌是用户指定的令牌,可用于将值传递给控制模式的属性。自定义令牌允许参数化模式并将其重复用于类似的数据文件。您可以从命令行传递值并更改验证参数,例如文件名后缀、产品代码、日期等。
创建自定义令牌所需的全部就是
- 将全局变量添加到您的模式中。
- 使用以下格式的命令调用 FlaFiC:\Program Files\Flat File Checker\FlaFi {Schema Path} -{Variable Name} {Variable Value}
- 将名为“campaign”的全局变量添加到模式中。
- 在模式中的任何属性中使用VB表达式中的“Constant”函数FileName=[Constant('campaign')]-import.csv
- 运行验证C:\Program Files\Flat File Checker\FlaFi {Schema Path} -campaign SRP54A
让我们看一下脚本的最重要函数 - ValidateFile。
Using the Code
下载该解决方案,并查看说明文件以获取有关如何尝试该代码的更多详细信息。
ValidateFile 函数具有以下参数
- strFolder- 包含模式文件的文件夹
- strSchema- 模式文件名
- strFileDir- 包含文件的目录
- strFile- 文件名
- strLogFileDir- 包含日志的文件夹
Private Function ValidateFile (strFolder, strSchema, strFileDir, _
                               strFile, strLogFileDir)
 'Execute FFC and return 1 of 4 return values
 'FFC ERRORLEVEL 0 = "VALID" File Valid
 'FFC ERRORLEVEL 1 = "DATA" Data Exception
 'FFC ERRORLEVEL 2 = "EXEC" Execution Exception
 'FFC ERRORLEVEL > 2 = "SEVR" Severe Error
 dim sh
 dim strCommand
 dim return
 ValidateFile = "NO_SCHEMA"
 if SchemaFileExists(strSchemaFolder, strSchema) then
 Set sh = CreateObject("WScript.Shell")
 WriteLogEntry objLogFile, "Validating File " & strFile & _
               " against FFC Schema " & strSchema
 strCommand = Chr(34) & strFlatFileExe & Chr(34) & " -silent " & _
   strFolder & strSchema  & " -InFileName " & strFile & " -InFileDir " & _
   strFileDir & " -InLogDir " & strLogFileDir
 WriteLogEntry objLogFile, "Running Command " & strCommand
 'wscript.echo "Running Command " & strCommand
 return = sh.Run(strCommand, 0, True)
 if return = 0 then
       WriteLogEntry objLogFile, _
         "File Successfully Validated Return Code = " & return
    ValidateFile = "VALID"
 else
  if return = 1 then
   WriteLogEntry objLogFile,"Data File Validation Failed, Return Code " _
    & return
   ValidateFile = "DATA"
  else
   if return = 2 then
    WriteLogEntry objLogFile,"Execution error, Return Code " & return
    ValidateFile = "EXEC"
   else
    WriteLogEntry objLogFile,"Serious, Return Code " & return
    ValidateFile = "SEVR"
   end if
  end if
 end if
 set sh = nothing
 else
 ValidateFile = "NO_SCHEMA"
end if
end function
关注点
将此解决方案转移到VBA会很有用,因为它提供了更好的调试和日志记录环境。
有关平面文件检查器命令行执行的更多信息,请参见论坛


