怎么将一个文本文件的内容读取并存入数据库?

时间:2023-01-06 14:51:10
我想做一个智能聊天机器人,首先要把词库导入数据库,字典(文本文件)的文件排版是:







我想过通过字符流读取然后存入数据库,试过好几次都行不通,大神帮忙看看

代码和文本格式如图
怎么将一个文本文件的内容读取并存入数据库?
怎么将一个文本文件的内容读取并存入数据库?

9 个解决方案

#1


存啥数据库啊费劲  直接存到一个文本里*.json就好了格式就这样{"哈哈":"笑啥笑啊打死你","不要哭":"55555~~"} 然后你在读取这个文件和解析就好了

#2


#3


没有抛异常吗????

#4


使用HashMap作为数据的缓存。
读取文本内容到HashMap里面,不要用List,效率比较低。
遍历HashMap进行数据插入。

JDBC,使用PreparedStatement,使用代?的SQL,每次循环设置新的数据,执行空参数的executeUpdate方法。
效率较高。

#5


你这种一一对应的,完全可以用properties文件,然后读取放在map的集合中,然后插入数据库,你最起码得说明下你上面报什么错吧

#6



那么问题来了,  你的问题到底出在哪里?

#7


怎么将一个文本文件的内容读取并存入数据库?

在每句话后边加一个特殊符号“]” ,根据特殊符号进行截取

BufferedReader reader = null;
try {
String str;
reader = new BufferedReader(new FileReader("E:/资料/测试.txt"));
while ((str = reader.readLine()) != null) {
String[] tarray = str.split("]");

for(int i=0;i<tarray.length;i++){
if(i/2==0){
String s1 =tarray[i];
System.out.println(s1);
}else{
String s2 =tarray[i];
System.out.println(s2);
}
}
// System.out.println(str);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
//关闭
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}

#8


 "insert into smart_message set message = " + s1 + " response = " + s2 

#9


最好不要用图片,直接贴代码

for(int j=0;list.get(j) != null && j<474; j++) {
        if(list.contains(list.get(j))){
          list.remove(j);
          list.remove(j+1);
        }
}


获取了List以后,为何还要在remove掉?
你把这段for循环去掉看看。

优化意见:用HashMap,用两个ArrayList单元来表示实在不好

#1


存啥数据库啊费劲  直接存到一个文本里*.json就好了格式就这样{"哈哈":"笑啥笑啊打死你","不要哭":"55555~~"} 然后你在读取这个文件和解析就好了

#2


#3


没有抛异常吗????

#4


使用HashMap作为数据的缓存。
读取文本内容到HashMap里面,不要用List,效率比较低。
遍历HashMap进行数据插入。

JDBC,使用PreparedStatement,使用代?的SQL,每次循环设置新的数据,执行空参数的executeUpdate方法。
效率较高。

#5


你这种一一对应的,完全可以用properties文件,然后读取放在map的集合中,然后插入数据库,你最起码得说明下你上面报什么错吧

#6



那么问题来了,  你的问题到底出在哪里?

#7


怎么将一个文本文件的内容读取并存入数据库?

在每句话后边加一个特殊符号“]” ,根据特殊符号进行截取

BufferedReader reader = null;
try {
String str;
reader = new BufferedReader(new FileReader("E:/资料/测试.txt"));
while ((str = reader.readLine()) != null) {
String[] tarray = str.split("]");

for(int i=0;i<tarray.length;i++){
if(i/2==0){
String s1 =tarray[i];
System.out.println(s1);
}else{
String s2 =tarray[i];
System.out.println(s2);
}
}
// System.out.println(str);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
//关闭
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}

#8


 "insert into smart_message set message = " + s1 + " response = " + s2 

#9


最好不要用图片,直接贴代码

for(int j=0;list.get(j) != null && j<474; j++) {
        if(list.contains(list.get(j))){
          list.remove(j);
          list.remove(j+1);
        }
}


获取了List以后,为何还要在remove掉?
你把这段for循环去掉看看。

优化意见:用HashMap,用两个ArrayList单元来表示实在不好