我是初学java,但是目前遇到一个难题,恳请java高手帮我编个小程序,具体任务是:
我要将下载下来的SCI论文题录信息导入SQL Server数据库。
例如有2篇论文,AU后面跟的是作者的名字,TI后面是论文题目,C1后面是作者单位,UT是论文的唯一标识符。
 
PT J
AU Liao, F
   Wang, L
   Wu, S
   Li, YP
   Zhao, L
   Huang, GM
   Niu, CJ
   Liu, YQ
   Li, MG
TI The complete mitochondrial genome of the fall webworm, Hyphantria cunea
C1 [Wu, S; Li, YP; Liu, YQ] 沈阳农业大学, 生物学院, 沈阳 110866, 中国.
   [Liao, F; Zhao, L; Li, MG] 南开大学, 生命科学学院, 天津 300071, 中国.
   [Liao, F; Huang, GM; Niu, CJ] 天津大学, 天津 300071, 中国.
   [Wang, L] 中国农业大学, 北京 101113, 中国.
RP Liu, YQ, 沈阳农业大学, 生物学院, 沈阳 110866, 中国.
UT WOS000276873800006
ERPT J
AU Liao, F
   Xue, CY
   Huang, Y
   Xie, Y
   Li, Y
TI The activity and expression of microRNAs in prostate cancers
C1 [Liao, F; Xue, CY; Huang, Y; Xie, Y; Li, Y] 复旦大学, 生命学院, 上海 200433, 中国.
RP Xie, Y, 复旦大学, 生命学院, 上海 200433, 中国.
UT WOS000283937800024
ER
  
例如,对于第1篇论文的作者单位信息,SQL Server新建一个表inst_info,键AU为作者名字,键C1为作者单位(只需要大学名字的信息,不需要大学下面的学院),键CU为国家:
 C1 [Wu, S; Li, YP; Liu, YQ] 沈阳农业大学, 生物学院, 沈阳 110866, 中国.
    [Wang, L] 中国农业大学, 北京 101113, 中国.
    
将Wu, S; Li, YP; Liu, YQ这3个作者(以分号隔开)的单位C1列都写入为沈阳农业大学,在国家CU列写入中国;
将Wang, L的作者单位C1列写入中国农业大学,国家CU列写入中国.主键为UT字段后面的WOS000276873800006,第一个作者为WOS000276873800006_1,第二个作者为WOS000276873800006_2......有的作者可能有多个单位,例如第1篇论文中的Liao,F有2个单位:
   [Liao, F; Zhao, L; Li, MG] 南开大学, 生命科学学院, 天津 300071, 中国.
   [Liao, F; Huang, GM; Niu, CJ] 天津大学, 天津 300071, 中国.
那么就将第一个单位的主键设为WOS000276873800006_1_1,然后同样写入单位C1和国家CU的信息;
第二个单位的主键设为WOS000276873800006_1_2......此外,还需要注意的是,第二篇论文中的Liao, F可能是另外一个人,千万不能将第2篇论文的Liao, F写入第1篇论文的数据中。

解决方案 »

  1.   

    惭愧啊,我对java实在是不熟悉,只有来这里求高手帮忙了
      

  2.   

    既然你是在学java
    那你要试着自己做啊
      

  3.   

    我将以前的类似的代码修改了一下,但是出错了,AU字段插入的是空值,并且在后半段的else后边的部分也有问题,恳请高手帮我修改一下!!!
     int cnt_ad=1;
     for(int k=0;k<c1.length();++k){
    while((k<c1.length())&&(c1.charAt(k)==' '))
       ++k;
    String c1word="";
    String college="";
    String country="";
    while((k<c1.length())&&(c1.charAt(k)!='.')&&(c1.charAt(k)!=']')){
    if(c1.charAt(k)=='['){
    ++k;
    int r=k;
    while(r<c1.length()&&c1.charAt(r)!=']')
    ++r;
    ++r;
    while((r<c1.length())&&(c1.charAt(r)==' '))
    ++r;
        while(r<c1.length()&&c1.charAt(r)!=','&&c1.charAt(r)!='.'){
    college+=c1.charAt(r);
    c1word+=c1.charAt(r);
    ++r;
    }
        if(c1.charAt(r)!='.'){
    while(r<c1.length()&&c1.charAt(r)!='.'){
    c1word+=c1.charAt(r);
    ++r;
    while((r<c1.length())&&(c1.charAt(r)==' ')){
    c1word+=c1.charAt(r);
    ++r;
    }
    country="";
    while(r<c1.length()&&c1.charAt(r)!=','&&c1.charAt(r)!='.'){
    country+=c1.charAt(r);
    c1word+=c1.charAt(r);
    ++r;
    }
    }
    }
    while(k<c1.length()&&c1.charAt(k)!=']'){
    String auword="";
    while((k<c1.length())&&(c1.charAt(k)==' '||c1.charAt(k)==';'))
    ++k;
    while(k<c1.length()&&c1.charAt(k)!=';'&&c1.charAt(k)!=']'){
    auword+=c1.charAt(k);
    ++k;
    }
    String nuword=ut+'_';
    nuword+=cnt_ad;
    ++cnt_ad;
    sql="INSERT ad_info(NU,UT,AU,C1,COLLEGE,CU)VALUES('"+nuword+"','"+ut+"',,'"+auword+"''"+c1word+"','"+college+"','"+country+"')";
    dboper.dataUpdate(sql);
      }
    k=r;
    }
    else{
    while(k<c1.length()&&c1.charAt(k)!=','&&c1.charAt(k)!='.'){
    college+=c1.charAt(k);
    c1word+=c1.charAt(k);
    ++k;
    }
        if(c1.charAt(k)!='.'){
    while(k<c1.length()&&c1.charAt(k)!='.'){
    c1word+=c1.charAt(k);
    ++k;
    while((k<c1.length())&&(c1.charAt(k)==' ')){
    c1word+=c1.charAt(k);
    ++k;
    }
    country="";
    while(k<c1.length()&&c1.charAt(k)!=','&&c1.charAt(k)!='.'){
    country+=c1.charAt(k);
    c1word+=c1.charAt(k);
    ++k;
    }
    }
    }
    for(int t=0;t<used_au.length();++t){
    String used="";
    while(t<used_au.length()&&used_au.charAt(t)!=';'){
    used+=used_au.charAt(t);
    ++t;
    }
    if(unused.equals(used)){
    isused=true;
    break;
    }
    }
    if(!isused){
    String nuword=ut+'_';
           nuword+=cnt_ad;
           ++cnt_ad;
    sql="INSERT ad_info(NU,UT,AU,C1,COLLEGE,CU)VALUES('"+nuword+"','"+ut+"',,'"+auword+"''"+c1word+"','"+college+"','"+country+"')";
    dboper.dataUpdate(sql);
    }
    }
    }
    }
     }