我是初学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篇论文的数据中。
解决方案 »
- 菜鸟提问
- 关于hibenate session 。。求救啊~
- 迷茫...我在线等..关于统计的问题...希望得到解决..
- [200分]关于throws和throw和try{}catch(){}的区别和联系,书本上也说的迷迷糊糊,他们中的三种不知什么时候该使用!详细如下:
- 求:split(String regex)
- FileInputStream中read(b,,)的用法是是什么?解决即给分
- 多线程_先产后销_运行结果有BUG
- JSONArray.fromObject(list)的问题
- 求大神解答我的一个编程疑惑!
- JAVA合并两个有序链表的小问题?
- 菜鸟求助!请大家教我 怎用二維數組的用法
- 在java中怎么样统计符合条件的数的个数--高手帮忙
那你要试着自己做啊
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);
}
}
}
}
}