正文之前
眾所周知,昨天跑了一百萬條數(shù)據(jù)钳吟,結(jié)果活生生的耗了我
這么多時間M⒘!!沃日昂烨摇F来啤树枫!想死了好么!景东!本來四點多準(zhǔn)備跑完就去健身砂轻,結(jié)果跑完都五點半了,所以只能先去吃飯斤吐,然后晚上去健身了搔涝。妙真。跃惫。。那感覺還是不一樣一些剖张。派阱。所以晚飯多吃了一丟丟诬留,以確保健身完畢不會餓哭!??
正文
今天聽一位老哥的建議贫母。在評論區(qū)文兑!用了batch批處理操作。速度陡增O倭印绿贞!
美滋滋好么!橘原!
還有另外一位老哥建議我用框架籍铁,這個比較麻煩的樣子?所以沒搞了趾断。拒名。。不過還有個建議就是每次在語句上面動手腳芋酌,其實也起到了類似批處理的效果靡狞。不過我昨晚高了一波,發(fā)現(xiàn)在語句里面一次加太多的values的話隔嫡,最后因為行數(shù)不確定甸怕,可能會導(dǎo)致出現(xiàn)null這種值。所以我就沒搞了腮恩。今天看評論看到了batch這種弄法梢杭。所以就去學(xué)了一波。秸滴。搞完之后美滋滋N淦酢!
今天上傳完后的記錄總數(shù)!
運行時間減半了咒唆!美滋滋
下面是代碼時間!全释!
import java.io.*;
import java.text.NumberFormat;
import java.io.IOException;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class WriteGearData {
protected Mysql_Connect mysql=new Mysql_Connect();
public void Delete(int max){
try {
mysql.Connect();
Statement statement = mysql.getStatement();
String DELETE = "delete from gear where id<"+max;
boolean delete_ok = statement.execute(DELETE);
if (delete_ok) {
System.out.println("Have Fun! Boys!\n\n");
}
statement.close();
mysql.Dis_Connect();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public String getInsertQuery(int id,Object[] name,Object[] value){
String insert="INSERT INTO gear(id";
for (int i=0;i<name.length;++i){
insert+=(","+name[i]);
}
insert+=") values("+id;
for (int i=0;i<value.length;++i){
insert+=(","+value[i]+"");
}
insert+=");";
return insert;
}
public void WriteData() throws IOException {
// Delete(100000);
int hz[] = new int [] {0,10,20,30,40,50,60,70,80,90};
int id = 1005311;
for (int x : hz) {
String filename = "/Users/zhangzhaobo/Documents/Graduation-Design/Data/Healthy Data/h30hz" + x + ".txt";
Scanner scanner=new Scanner(new FileInputStream(filename));
Object[] Name = new String[]{"Sensor1","Sensor2","Sensor3","Sensor4","HZ","category"};
int count = 0;
try {
mysql.Connect();
Statement statement = mysql.getStatement();
do{
//連續(xù)添加多條靜態(tài)SQL
Object [] line = new Object[6];
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(1);
for (int i=0;i<4;++i){
line[i]=Float.parseFloat(nf.format(scanner.nextFloat()));
}
line[4] = x;
line[5] = 1;
String INSERT = getInsertQuery(id, Name, line);
statement.addBatch(INSERT);
id++;
count++;
//執(zhí)行批量執(zhí)行
if (count>10000) {
statement.executeBatch();
count = 0;
}
}while(scanner.hasNext());
statement.executeBatch();
statement.close();
mysql.Dis_Connect();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
正文之后
哎装处。。浸船。為毛總是有人妄迁。。李命。會覺得登淘,借一個程序員的電腦是個很簡單的事情?封字?
總得學(xué)會拒絕不是黔州?!