自动化数据文件验证解决方案

在数据处理和分析领域,经常需要验证大量相似的数据文件。虽然通过Flat File Checker的图形用户界面(GUI)可以进行一些验证工作,但面对大量文件时,GUI就显得力不从心。幸运的是,可以通过命令行版本(FlaFi.exe)来解决这个问题。

Chris Ellison编写了一个基于VBScript的解决方案,该方案允许使用不同的Flat File Checker模式来验证多个数据文件,文件名前缀决定了使用哪个模式。这个脚本可以作为自动化数据验证过程的灵感来源。

有时需要验证许多相似的数据文件,这在Flat File Checker的GUI中是无法实现的。然而,通过控制台版本(FlaFi.exe),可以轻松解决这个问题。

主要控制台令牌

控制台应用程序可以接受以下参数:

  • -silent:执行模式时不向控制台窗口输出任何信息,并在验证完成后关闭控制台。
  • -errors:将数据错误输出到控制台窗口。

自定义令牌

自定义令牌是用户指定的令牌,可以用来传递值以控制模式的属性。自定义令牌允许参数化模式,并将其用于相似的数据文件。可以通过命令行传递值,并改变验证的参数,例如文件名后缀、产品代码、日期等。

要创建自定义令牌,需要:

  1. 在模式中添加全局变量。
  2. 使用以下格式调用FlaFi:
C:\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

让来看一下脚本中最重要的函数 - ValidateFile。

使用代码

下载解决方案,并查看说明文件以获取更多关于如何尝试代码的详细信息。

ValidateFile函数有以下参数:

  • strFolder - 包含模式文件的文件夹
  • strSchema - 模式文件名
  • strFileDir - 包含文件的目录
  • strFile - 文件名
  • strLogFileDir - 包含日志的文件夹

以下是VB.NET中的ValidateFile函数实现:

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 returnCode 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 returnCode = sh.Run(strCommand, 0, True) If returnCode = 0 Then WriteLogEntry objLogFile, "File Successfully Validated Return Code = " & returnCode ValidateFile = "VALID" ElseIf returnCode = 1 Then WriteLogEntry objLogFile, "Data File Validation Failed, Return Code " & returnCode ValidateFile = "DATA" ElseIf returnCode = 2 Then WriteLogEntry objLogFile, "Execution error, Return Code " & returnCode ValidateFile = "EXEC" Else WriteLogEntry objLogFile, "Serious, Return Code " & returnCode ValidateFile = "SEVR" End If End If Set sh = Nothing If Not SchemaFileExists(strSchemaFolder, strSchema) Then ValidateFile = "NO_SCHEMA" End If End Function
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485