各テーブルに数百万行のテーブルが 5 つあります。
各テーブルの形式は同じです。つまり、電子メール、IP アドレス、場所です。1 つの電子メール アドレスは、5 つのテーブルのいずれか、または 5 つのテーブルすべてに存在できます。他に と という 2 つのテーブルがUser_ip
ありUser_location
ます。
各メール アドレスの一意の IP アドレスを User_ip テーブルに保存し、各メール アドレスの個別の場所を user_location テーブルに保存したいと考えています。
現在、私はこの手順に従っていますが、これにはかなりの時間がかかります。他の解決策または方法はありますか???
Statement stmt = connection.createStatement();
stmt.executeUpdate("insert into temp(email,ip,location) select email,ip,location from Apr_web group by email,ip");
stmt.executeUpdate("insert into temp(email,ip,location) select email,ip,location from Apr_gov group by email,ip");
stmt.executeUpdate("insert into temp(email,ip,location) select email,ip,location from Apr_mail group by email,ip");
stmt.executeUpdate("insert into temp(email,ip,location) select email,ip,location from Apr_pop group by email,ip");
stmt.executeUpdate("insert into temp(email,ip,location) select email,ip,location from Apr_imap group by email,ip");
stmt1 = connection.createStatement();
stmt1.executeQuery("select distinct email from temp");
ResultSet rs = stmt1.getResultSet();
while(rs.next()){
Statement stmt2 = connection.createStatement();
stmt2.executeQuery("select distinct substring_index(ip,'.',2) from temp where email='"+email+"'");
ResultSet rs2 = stmt2.getResultSet();
while(rs2.next()`enter code here`){
ip=rs2.getString(1);
Statement stmt3 = connection.createStatement();
Statement stmt4 = connection.createStatement();
stmt3.executeQuery("select * from user_ip where uid='"+email+"' and ip='"+ip+"'");
ResultSet rs3 = stmt3.getResultSet();
if(rs3.next()){
System.out.println("THE ROW ALREADY EXISTS IN IP TABLE");
}
else{
stmt4.executeUpdate("insert into user_ip(uid,ip) values('"+email+"','"+ip+"')");
System.out.println("ROW INSERTED IN USER_IP");
}
}
Statement stmt5 = connection.createStatement();
stmt5.executeQuery("select distinct location from temp where email='"+email+"' and location !='no information found'");
ResultSet rs4 = stmt5.getResultSet();
while(rs4.next()){
location = rs4.getString(1);
//Statement stmt6 = connection.createStatement();
//Statement stmt7 = connection.createStatement();
pst1 = connection.prepareStatement("select * from user_location where uid=? and location=?");
pst1.setString(1, email);
pst1.setString(2, location);
ResultSet rs5 = pst1.executeQuery();
if(rs5.next()){
System.out.println("THE ROW ALREADY EXISTS IN USER_LOCATION");
}
else{
pst2 = connection.prepareStatement("insert into user_location(uid,location) values(?,?)");
pst2.setString(1,email);
pst2.setString(2,location);
pst2.executeUpdate();
System.out.println("ROW INSERTED IN USER_LOCATION");
}
}
}