通過編寫java代碼生成數據文件的校驗文件並通過kettle 調用執行。
1.新建轉換生成數據文件(一個轉換可以生成多個文件)
2.新建作業
shell內容
寫入腳本文件名
2.1腳本內容
java -jar /home/verify.jar
2.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);
}
}
}