Java 存储过程

Java 存储过程Java 代码create or replace and compile java source named syndomain as import java.io.IOExcep

Java 存储过程

Java 代码

create or replace and compile java source named syndomain as import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.sql.ResultSet;

import com.mysql.jdbc.Driver;

import oracle.jdbc.driver.OracleDriver;

import java.text.SimpleDateFormat;

import java.util.Date;

public class SynDomain

{

public static void syn()

{

Connection conn=null ;

Connection conn2=null ;

PreparedStatement psmt=null ;

PreparedStatement psmt2=null ;

try {

//Class.forName("com.mysql.jdbc.Driver");

DriverManager.registerDriver(new

com.mysql.jdbc.Driver());

DriverManager.registerDriver(new

oracle.jdbc.driver.OracleDriver());

//Class.forName("com.mysql.jdbc.Driver");

//从mysql 数据库中同步数据到oracle

int i=0;

conn=DriverManager.getConnection("jdbc:mysql://192.168.10.10:3306/ism_jiangsu?autoReconnect=true&characterEncoding=utf8&mysqlEncoding=utf8", "root" , "ism" );

conn2=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl" , "idcqc" , "idcqc" );

SimpleDateFormat sdf=new

SimpleDateFormat("yyyy-MM-dd" );

,

String sql="SELECT CONCAT('http://www.',domain) FROM crawl_site where add_time>'" sdf.format(new Date()) "'" ;

String sql2="insert into url_enter(id,url,status) values (URL_ENTER_SEQ.nextval,?,0)";

psmt=conn.prepareStatement(sql);

psmt2=conn2.prepareStatement(sql2);

ResultSet rs=psmt.executeQuery();

while (rs.next()){

String url=rs.getString(1);

psmt2.clearParameters();

psmt2.setString(1,url);

try {

psmt2.execute();

}catch (Exception e){

}

i ;

}

System.out.println(i);

//从oracle 数据库同步iswap 到mysql

i=0;

sql="UPDATE crawl_site SET iswap=1 WHERE domain=?"; sql2="select * from url_enter where iswap=1"; psmt=conn.prepareStatement(sql);

psmt2=conn2.prepareStatement(sql2);

rs=psmt.executeQuery();

while (rs.next()){

String url=rs.getString(1);

url=UrlUtil.GetServerDomain(UrlUtil.extractDomain(url));

psmt.clearParameters();

psmt.setString(1,url);

try {

psmt.execute();

}catch (Exception e){

}

i ;

}

}/*catch (ClassNotFoundException e) {

e.printStackTrace(); e.printStackTrace(); }*/ catch (SQLException e) { }finally {

,

if (psmt!=null ){

} if (conn!=null ){ } try { } conn.close(); e.printStackTrace(); } catch (SQLException e) { try { } psmt.close(); e.printStackTrace(); } catch (SQLException e) { if (psmt2!=null ){ try { } } if (conn2!=null ){ } try { } conn2.close(); e.printStackTrace(); } catch (SQLException e) { } psmt2.close(); e.printStackTrace(); } catch (SQLException e) {

}

}

create or replace and compile java source named urlutil as import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class UrlUtil {

public static int dcounts = 0;

,

"|.gd|.gs|.hn|.hk|.io|.in|.it|.im|.info|.jp|.kr|.kz|.la|.li|.name "|.tc|.tel|.tv|.tk|.tl|.tw|.th|.us|.uk|.vc|.vg|.ws" "|.其它|.中国|.公司|.网络|.政务|.公益|.中國|").split("|"); |.nz|.nu|.nl|.ma|.me|.ms|.mobi|.ru|.sh|.sg|.sc|.se" //后缀长度为1的域名 public static String[] domainRulesLength1 = (".my|.com|.cn|.net|.org|.gov|.ac|.asia|.ai|.am|.at|.biz|.bz|.ca|.cc|.cd|.ch|.cz|.cm|.cx|.co|.de|.edu|.eu|.es|.fm|.fr|.gg" //后缀长度为2的域名 public static String[]

domainRulesLength2=(".ac.cn|.com.cn|.org.cn|.gov.cn|.edu.cn|.net.cn|.com.hk|.com.tw|.com.sg|.com.au"

// 对域名进行处理,如果域名是二级域名,则查询的时候按照一级域名处理 public static String getTopDomain(String domain) { domain = domain.toLowerCase(); String []domainArray = domain.split("."); String domainLongEnd = "" ; //改方法返回顶级域名。 public static String GetServerDomain(String str) { } return getTopDomain(str); } public static boolean IsNumeric(String str) { Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(str); if (!isNum.matches()) { } return true ; return false ; "|.co.kr|.kmac.to|.com.au|.org.nz|.org.au|.co.nz|.sh.cn|.net.ru|. "|.js.cn|.tj.cn|.bj.cn|.cq.cn|.he.cn|.nm.cn|.ln.cn|.jl.cn|.hl.cn| "|.sc.cn|.yn.cn|.xz.cn|.sn.cn|.gs.cn|.qh.cn|.sx.cn|.zj.cn|.hb.cn|co.uk" .ah.cn|.fj.cn|.jx.cn|.sd.cn|.ha.cn|.hn.cn|.gd.cn|.gx.cn|.hi.cn" .gz.cn|.nx.cn|.hk.cn|.xj.cn|.tw.cn|.mo.cn|.yn.cn").split("|");

,

{

{

String dingjidomain = "" ; boolean ismatch=false ; //int num=0; //先匹配长度为2的域名 for (int i=0; i

System.out.println(GetServerDomain("mail.a.com")); System.out.println(getTopDomain("njhysh.cn" )); System.out.println(getDcounts("www.baidu.com")); //

} //

,

public static int getDcounts(String str) { } public static boolean isIpAddress(String domain) { String regex = GetServerDomain(str); return dcounts;

"(((d{1,2})|(1d{2})|(2[0-4]d)|(25[0-5])).){3}((d{1,2})|(1d{2})|(2[0-4]d)|(25[0-5]))";

}

public static String extractDomain(String str) { } String domain = str; String domainRegex = Pattern pattern = Pattern.compile(domainRegex); Matcher matcher = pattern.matcher(str); if (matcher.find()) { } return domain; domain = matcher.group(); } Pattern p = Pattern.compile(regex); Matcher m = p.matcher(domain); if (m.find()) {// 是IP 地址 return true ; // out.println(domain " 3");// 按照IP 地址的查询方式查询 } else { } return false ; "[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62}) ";

存储过程代码:

create or replace procedure synDomain as language java name 'SynDomain.syn()';

标签: