读取csv文件延迟

时间:2015-06-02 14:51:11

标签: java csv heroku ftp

我创建了一个java应用程序,它从FTP服务器读取csv文件,并在postgress数据库中插入csv数据。我之后将应用程序部署到Heroku,并将一些csv文件添加到免费主机,只是为了测试我的应用程序是如何工作的。

测试显示应用程序开始读取文件并以非常快的速度插入文件,但如果csv文件大于5000行,则行3000-5000需要花费大量时间从主机读取。

延迟可能是我的免费主机问题,还是heroku问题,还是我应该重构我的代码?

1 个答案:

答案 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");

        }
    }