2015-06-02 218 views
-1

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

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

延迟可能是我的免费主机或Heroku问题的​​问题,或者我应该重构我的代码?

+0

您是否遇到过与普通的FTP GUI客户端(例如WinSCP或FilezZlla)相同的问题? –

+0

不,当我使用普通的FTP客户端(我使用FileZilla)时,我没有同样的问题,并且速度更快(使用我的FTP客户端的速度要快10倍或更多)。这对我来说很奇怪,因为它是相同的代码! 这是我的代码或别的什么问题? –

+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"); 

     } 
    }