通过编写java代码生成数据文件的校验文件并通过kettle 调用执行。 1.新建转换生成数据文件(一个转换可以生成多个文件) 2.新建作业 shell内容 写入脚本文件名 2.1脚本内容
java -jar /home/verify.jar2.2jar 包内容
public class EdaVerify { /** * 生成校验文件 * * @param dictionary * @param filename * @param size * @param count * @param date * @throws IOException */ public static void createVerifyFile(String dictionary, String filename, long size, int count, String date) throws IOException { File file = new File(dictionary); file.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(dictionary)); out.write(filename); out.write(String.valueOf(size)); out.write(String.valueOf(count)); out.write(date); out.write(" "); out.write("\n"); out.flush(); out.close(); } /** * 获取目录下文件 * * @param fileDictionary * @return */ public static List<String> getFileList(String fileDictionary) { File file = new File(fileDictionary); File[] fileList = file.listFiles(); List<String> filenames = new ArrayList<String>(); for (int i = 0; i < fileList.length; i++) { String fileName; if (fileList[i].isFile()) { fileName = fileList[i].getName(); filenames.add(fileName); } if (fileList[i].isDirectory()) { fileName = fileList[i].getName(); fileName.concat(","); } } return filenames; } /** * 获取文件大小 * * @param filename * @throws IOException */ public static long getFileSize(String filename) throws IOException { FileInputStream fis = null; fis = new FileInputStream(filename); Long count = Long.valueOf(new File(filename).length()); if (fis != null) { fis.close(); } return count; } /** * 获取文件行数 * * @param filename * @return * @throws IOException */ public static int readFileLineCounts(String filename) throws IOException { File file = new File(filename); int count = 0; FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); while (br.readLine() != null) { count++; } if (br != null) { br.close(); } return count; } /** * 生成校验文件名称 * * @param filename * @return */ public static String createVerifyName(String dictionary, String filename) { String verifyserial = filename.substring(0, 19); String verifyfilename = dictionary + verifyserial + ".verf"; return verifyfilename; } public static void main(String[] args) throws IOException { String dictionary = "/home/tsaip/csss/data-integration/kettle/edadata/"; List<String> list = getFileList(dictionary); for (String name : list) { String filename = dictionary + name; int count = readFileLineCounts(filename); long size = getFileSize(filename); File FILE = new File(filename); long time = FILE.lastModified(); String ctime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date(time)); ctime=name.substring(2, 10)+ctime; String verifyname = createVerifyName(dictionary, name); createVerifyFile(verifyname, name, size, count, ctime); } } }