📄 schedule.java.svn-base
字号:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd分 HH:mm:ss ");
System.out.println(newtk.getDATE());
String logerrorname = null;
String logsqlname = null;
logerrorname = "log.txt";
logsqlname = "log.txt";
String error = "增量模式导数据失败:\r";
String sql = "";
boolean bFile;
bFile = false;
File dirFile;
dirFile = new File("" + root + "/src/Log");
bFile = dirFile.exists();
if (bFile == true) {
System.out.println("Log文件夹存在。");
} else {
System.out.println("Log文件夹不存在" + "\n" +"创建Log文件夹"+ "\n");
bFile = dirFile.mkdir();
if (bFile == true) {
System.out.println("Log文件夹 Createsuccessfully!");
} else {
System.out.println("Disable to make the folder,please check the disk is full or not.");
System.exit(1);
}
}
System.out.println("开始执行创建模式导数据!………………");
// *****************************与源库建立连接,从源库取得数据***************************************
try {
Class.forName(newtk.getSDriver());
} catch (ClassNotFoundException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法完成源数据库驱动!\n";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("无法完成源数据库驱动!");
e.printStackTrace();
}
Connection conn = null;
try {
System.out.println(newtk.getSURL());
conn = DriverManager.getConnection(newtk.getSURL(),newtk.getSuser(),newtk.getSpassword());
} catch (SQLException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法与源数据库建立连接!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("无法与源数据库建立连接!");
e.printStackTrace();
}
String field = "";
for(int i = 0; i < newtk.getS().length; i++){
field =field + "," + newtk.getS()[i];
}
field = field.substring(1);
String sschema = null;
if(newtk.getSSchema() == null){
sschema = "";
}
else{
sschema = newtk.getSSchema();
}
String stable = null;
if(newtk.getSKind().equalsIgnoreCase("excel")){
stable = "[Sheet1$]";
}
else{
stable = newtk.getSTab();
}
String query = " select " + field + " from " + sschema + "." + stable;
System.out.println(query);
System.out.println(newtk.getSTab());
PreparedStatement pstm = null;
ResultSet rs = null;
try {
pstm = conn.prepareStatement(query);
rs = pstm.executeQuery();
} catch (SQLException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法从源数据库中取得数据!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("无法从源数据库中取得数据!");
e.printStackTrace();
}
// *****************************与目的库建立连接,向目的库数据*************************************************
try {
Class.forName(newtk.getDDriver());
} catch (ClassNotFoundException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法完成目的数据库驱动!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("无法完成目的数据库驱动!");
e.printStackTrace();
}
Connection newconn = null;
try {
//DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
newconn = DriverManager.getConnection(newtk.getDURL(),newtk.getDuser(),newtk.getDpassword());
} catch (SQLException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法与目的数据库建立连接!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("无法与目的数据库建立连接!");
e.printStackTrace();
}
// *******************************判断目的表是否已经存在*****************************************************
Date da = new Date();
SimpleDateFormat fTime = new SimpleDateFormat("yyyyMM");
String nowdate = fTime.format(da);
String tablename = newtk.getDTab();
String[] tablenameitems = tablename.split("_");
// String tableprx = tablename.substring(0,tablename.length()-6);
String tableprx = tablenameitems[0] + "_";
tableprx = tableprx.toUpperCase();
String newtablename = tableprx + nowdate;
boolean exist = false;
String isexist = "select * from all_tables where table_name = '"
+ newtablename+ "' and owner = '" + newtk.getDSchema() + "'";
System.out.println(isexist);
PreparedStatement exst = null;
ResultSet exstrs = null;
try {
exst = newconn.prepareStatement(isexist);
exstrs = exst.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
int havenum = 0;
try {
while(exstrs.next()){
//if(exstrs.getString(1).equalsIgnoreCase(newtk.getDSchema()))
havenum++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
if(havenum > 0){
exist = true;
sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表已经存在,直接执行导入操作!";
log.Log("" + root + "/src/Log/" + logsqlname, sql);
System.out.println("目的表已经存在,直接执行导入操作!");
}
System.out.println(havenum);
// ****************************目的表不存在,创建目的表,然后导入数据***************************************************
if(!exist)
{
sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表不存在,创建目的表!";
log.Log("" + root + "/src/Log/" + logsqlname, sql);
System.out.println("目的表不存在,创建目的表!");
String create = "create table " + newtk.getDSchema() + "." + newtablename;
String crtfield = "";
for (int i = 0; i < newtk.getD().length; i ++){
String type = null;
if(newtk.getDAttrb()[i].equalsIgnoreCase("number"))
type = "NUMBER";
if(newtk.getDAttrb()[i].equalsIgnoreCase("varchar2"))
type = "VARCHAR2(32)";
if(newtk.getDAttrb()[i].equalsIgnoreCase("date"))
type = "DATE";
if(newtk.getDAttrb()[i].equalsIgnoreCase("float"))
type = "FLOAT";
if(newtk.getDAttrb()[i].equalsIgnoreCase("double"))
type = "REAL";
if(i == 0){
crtfield = crtfield + "," + newtk.getD()[i]+ " " + type + " Primary Key ";
}
else{
crtfield = crtfield + "," + newtk.getD()[i]+ " " + type;
}
}
crtfield = crtfield.substring(1);
create = create + "( " + crtfield + " )";
sql = sdf.format(new Date()) + " 方案: " + newtk.getTaskName()+ create;
log.Log("" + root + "/src/Log/" + logsqlname, sql);
System.out.println(create);
PreparedStatement crtstm = null;
try {
crtstm = newconn.prepareStatement(create);
crtstm.executeUpdate();
sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表创建成功!";
log.Log("" + root + "/src/Log/" + logsqlname, sql);
System.out.println("目的表创建成功!");
} catch (SQLException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 创建目的表失败!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("创建目的表失败!");
e.printStackTrace();
}
}
String newfield = "";
for(int i = 0; i < newtk.getD().length; i++){
newfield = newfield + "," + newtk.getD()[i];
}
newfield = newfield.substring(1);
String att = "";
for(int i = 0;i < newtk.getD().length; i++){
att = att + "," + "?";
}
att = att.substring(1);
String insert = "insert into " + newtk.getDSchema() + "." + newtablename + "(" + newfield + ") values (" + att +")" ;
PreparedStatement inpstm = null;
System.out.println(insert);
int num = 0;
try {
while(rs.next()){
System.out.println(newtk.getD()[0]);
int keyword = rs.getInt(newtk.getD()[0]);
String existitem = "select " + newtk.getD()[0] + " from " + newtk.getDSchema() + "." + newtablename +
" where " + newtk.getD()[0] + " = " + keyword;
System.out.println(existitem);
System.out.println( keyword);
PreparedStatement existitemps = newconn.prepareStatement(existitem);
ResultSet existitemrs = existitemps.executeQuery();
boolean isexistitem = existitemrs.next();
System.out.println(newtk.getD()[0]);
System.out.println( keyword);
if(!isexistitem){
// sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 不存在 " + newtk.getD()[0] + " = " + keyword +" 插入!";
// log.Log("" + root + "/src/Log/" + logsqlname, sql);
// System.out.println("不存在 " + newtk.getD()[0] + " = " + keyword +" 插入!");
inpstm = newconn.prepareStatement(insert);
inpstm.setInt(1,keyword);
int attnum = 2;
for(int i = 1; i < newtk.getS().length; i++){
if(newtk.getDAttrb()[i].equalsIgnoreCase("number"))
inpstm.setInt(attnum,rs.getInt(newtk.getS()[i]));
if(newtk.getDAttrb()[i].equalsIgnoreCase("varchar2"))
inpstm.setString(attnum,rs.getString(newtk.getS()[i]));
if(newtk.getDAttrb()[i].equalsIgnoreCase("Date"))
inpstm.setDate(attnum,rs.getDate(newtk.getS()[i]));
if(newtk.getDAttrb()[i].equalsIgnoreCase("float"))
inpstm.setFloat(attnum,rs.getFloat(newtk.getS()[i]));
if(newtk.getDAttrb()[i].equalsIgnoreCase("double"))
inpstm.setDouble(attnum,rs.getDouble(newtk.getS()[i]));
attnum++;
}
num += inpstm.executeUpdate();
inpstm.close();
}
else{
// sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 存在 " + newtk.getD()[0] + " = " + keyword;
// log.Log("" + root + "/src/Log/" + logsqlname, sql);
// System.out.println("存在 " + newtk.getD()[0] + " = " + keyword);
}
existitemrs.close();
existitemps.close();
}
} catch (SQLException e) {
error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 向目的库数据库中导入数据失败!";
log.Log("" + root + "/src/Log/" + logerrorname, error);
System.out.println("向目的库数据库中导入数据失败!");
e.printStackTrace();
}
try {
newconn.close();
if(num > 0)
inpstm.close();
newconn.close();
rs.close();
pstm.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
sql = sdf.format(new Date()) + insert;
log.Log("" + root + "/src/Log/" + logsqlname, sql);
sql = "\n" + sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 更新模式导数据结果:" + "导入了 " + num + " 项数据!\n" ;
log.Log("" + root + "/src/Log/" + logsqlname, sql);
System.out.println("导入了 " + num + " 项数据!");
System.out.println("创建模式导数据执行完毕!");
}
public void run() {
System.out.println("t["+ id + "] is running. Now time "+
new Date(System.currentTimeMillis()));
if(newtk.getImportWay().equals("更新"))
this.renewal();
else if(newtk.getImportWay().equals("添加"))
this.increment();
else if(newtk.getImportWay().equals("创建"))
this.establish();
// *****************************周期运行线程,启动下一次任务****************************************
starttime = new Date(System.currentTimeMillis());
Calendar c = new GregorianCalendar();
c.setTime(starttime);
switch(this.period){
case YEAR:
c.add(Calendar.YEAR, 1);
break;
case MONTH:
c.add(Calendar.MONTH, 1);
break;
case WEEK:
c.add(Calendar.DATE, 7);
break;
case DAY:
c.add(Calendar.DATE, 1);
break;
case HOUR:
c.add(Calendar.HOUR, 1);
break;
case MINUTE:
c.add(Calendar.MINUTE, 1);
break;
}
long delay = c.getTimeInMillis() - starttime.getTime();
System.out.println("开始执行线程的下一周期!");
Schedule.scheduler.schedule(new MyThread(this.period,newtk), delay, TimeUnit.MILLISECONDS);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -