因为个人原因导致账号zilang629丢失。。。上不去了,没办法,重新注册了个账号~然后本账号因为一时手痒,爬了下12306,封号了,所以今天才慢慢更新,不过为工作人员点赞,昨天发的申请今天就弄好了。
当初工作的时候,需要大量的手机号,移动、联通、电信的都有,应该是整个省的电话号了,只要旅游漫游到一个地方,就发当地的特色信息,应该是这么个业务。当时的问题就是怎么处理好这些电话号,1个小时更新一次,数据量绝对刺激。每次处理10个文件,每个文件20MB左右,录入都是个问题。最后我采用了这个办法解决了问题。
通过当时的工作让我明白数据库的问题就好交给数据库去做。
create or replace type v_varchar is table of nvarchar2(15);
create or replace procedure InsSell(
v_CHARGING in v_varchar,
v_ADDRESS_LOCAL in v_varchar,
v_ADDRESS_REMOTE in v_varchar)
as
i integer;
begin
for i in 1..v_CHARGING.count loop
INSERT INTO DX_MMS_AREAINFO (ID,CHARGING,ADDRESS_LOCAL,ADDRESS_REMOTE) VALUES(SEQ_MMS_AREAINFO.NEXTVAL,v_CHARGING(i),v_ADDRESS_LOCAL(i),v_ADDRESS_REMOTE(i));
end loop;
DELETE FROM DX_MMS_AREAINFO M WHERE M.ROWID > (SELECT MIN(T.ROWID) FROM DX_MMS_AREAINFO T WHERE M.CHARGING=T.CHARGING);
end InsSell;
以上是数据库的存储过程,很简单,循环插入数据到一个临时表中,然后和用户表比较,看看用户现在的状态,是不是已经回来本地了。然后删除临时表中的数据。(时间久远记不住了)
然后java代码
public void insertintoareainfo(List list) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
GetConn getConn = new GetConn();
Connection con = getConn.getConn();
oracle.sql.ArrayDescriptor a_id = null;
oracle.sql.ArrayDescriptor a_ticketid = null;
oracle.sql.ArrayDescriptor a_name = null;
oracle.sql.ArrayDescriptor a_age = null;
Object[] s_id = new Object[list.size()];
Object[] s_ticketid = new Object[list.size()];
Object[] s_name = new Object[list.size()];
for (int i = 0; i < list.size(); i++) {
NumberAddress num = (NumberAddress) list.get(i);
s_id[i] = new String(num.getNumPhone());
s_ticketid[i]=new String(num.getNumBelong());
s_name[i]=new String(num.getNumRoam());
}
try {
oracle.sql.ArrayDescriptor a_nvarchar =ArrayDescriptor.createDescriptor("V_VARCHAR", con);//一定要大写
ARRAY id_test = new ARRAY(a_nvarchar, con, s_id);
ARRAY ticketid_test = new ARRAY(a_nvarchar, con, s_ticketid);
ARRAY name_test = new ARRAY(a_nvarchar, con, s_name);
CallableStatement cstmt = con.prepareCall("{call InsSell(?,?,?)}");
cstmt.setArray(1, id_test);
cstmt.setArray(2, ticketid_test);
cstmt.setArray(3, name_test);
cstmt.execute();
con.commit();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Insert into DB error: " + e.getMessage());
}
}
博客搬家,也需要写点新东西出来,晚点的时候写个验证码识别的,和图像对比的代码~如果博主不懒的话。
以上为搬家内容。