kette調用腳本生成文件並上傳

通過編寫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);
		}

	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章