我创建了一个java应用程序,它从FTP服务器读取csv文件,并在postgress数据库中插入csv数据。我之后将应用程序部署到Heroku,并将一些csv文件添加到免费主机,只是为了测试我的应用程序是如何工作的。
测试显示应用程序开始读取文件并以非常快的速度插入文件,但如果csv文件大于5000行,则行3000-5000需要花费大量时间从主机读取。
延迟可能是我的免费主机问题,还是heroku问题,还是我应该重构我的代码?
答案 0 :(得分:0)
这是我使用的代码。
public void Listing(String filename)
{
header = new ArrayList<String>();
int fid = 0;
int hid = 0;
BufferedReader bufferedReader = null;
InputStream inputStream = null;
setFtpUrl();
String fullPath = setFullPath();
try
{
URL url = new URL(fullPath);
URLConnection conn = url.openConnection();
inputStream = conn.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = bufferedReader.readLine();
Boolean isHeader = true;
while (line != null)
{
Rlines = new ArrayList<String>();
int k=0;
while(k<300 && line!=null){
if (isHeader){
header = Arrays.asList(line);
hjson = new Gson().toJson(header);
hid = dbConnect.insertHeader(hjson);
isHeader=false;
fid = dbConnect.insertFile(filename, "ss", 0, 0, 0, hid);
}
else{
List<String> rows = Arrays.asList(line);
rjson = new Gson().toJson(rows);
Rlines.add(rjson.toString());
}
line = bufferedReader.readLine();
k++;
}
dbConnect.insertRows(Rlines, "New", fid, hid, "123kot123");
}
}