gpt4 book ai didi

java - 读取文本文件并添加到列表时出现内存不足错误

转载 作者:行者123 更新时间:2023-12-02 00:09:01 24 4
gpt4 key购买 nike

我正在尝试读取文本文件并将每一行添加到列表中。该列表用于在准备好的语句中将记录插入到数据库中。问题是当有 1000000 条记录时,执行速度变得太慢,有时会出现“内存不足”错误。

我的代码

while ((sRec = in.readLine()) != null) {
myCollection.add(reversePad(sRec, hmSizeLookup, colLength, tableName));
a = Utility.getPositions(sRec, hmSizeLookup, colLength);
i = i + 1;
}
for (int j = 0; j < a.length; j++) {
Field f = (Field) hmSizeLookup.get(String.valueOf(j));
sAllFields += f.getColumnName();
if (j < a.length) {
sValues += "?";
}
if (j < a.length - 1) {
sValues += ",";
sAllFields += ",";
}
}
sQ = "insert into " + tableName + "(" + sAllFields + ") values(" + sValues + ")";
ds1.executePreparedStatement(sQ, myCollection);

如何从文本文件中一次只读取1000行并需要执行插入操作?这应该持续到文本文件末尾。

如有任何建议,我们将不胜感激,

谢谢

最佳答案

您需要在文件循环中进行插入。

将插入代码切出到一个函数中,每 1000 行调用它,然后调用 myCollection.clear()

循环结束后,您需要为上次插入后的所有数据再次调用它。

所以类似:

int line = 0;
while ((sRec = in.readLine()) != null) {
myCollection.add(reversePad(sRec, hmSizeLookup, colLength, tableName));
a = Utility.getPositions(sRec, hmSizeLookup, colLength);
i = i + 1;
if (++line > 1000) {
doTheInsert(myCollection);
myCollection.clear();
line = 0;
}
}
doTheInsert(myCollection);

关于java - 读取文本文件并添加到列表时出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com