2017-05-15 105 views
0

我有一個.csv文件包含100k行,我使用mysql來生成該文件。 我想將該文件分割成更小的文件,每個文件包含3k行。 我該如何使用mysql或java?哪個更快? 我在java中找到了解決方案,但它使用緩衝區讀取器和緩衝區寫入器來處理O(n^2)。使用mysql分割.csv文件

在此先感謝。

+0

請仔細閱讀[我可以問什麼議題有關(HTTP:// (http://stackoverflow.com/help/how-to-ask) 和[完美的問題](http:// codeblog .jonskeet.uk/2010/08/29/writing-the-perfect-question /) 以及如何創建[Minimal,Complete and Verifiable example](http://stackoverflow.com/help/mcve) – RiggsFolly

+0

這是**最糟糕的是一個O(n)問題。這個所謂的O(n^2)解決方案是什麼? –

+0

@KevinAnderson不是讀取緩衝區需要O(n)和外部需要O(n)? – RGB

回答

0

用java你可以使用java.I寧願使用UNIX腳本中,我們使用的是在分割文件下面的例子拆分文件我們

public static void main(String[] args) throws IOException { 

     String src="C:\\Users\\sahug\\Downloads\\split\\dumps.txt"; 
     String dest="C:\\Users\\sahug\\Downloads\\split\\"; 
     String fileName="MyFile"; 
     FileInputStream fis = new FileInputStream(str); 
     int size = 20; 
     byte buffer[] = new byte[size]; 

     int count = 0; 
     while (true) { 
      int i = fis.read(buffer, 0, size); 
      if (i == -1) 
       break; 

      String filename = fileName + count; 
      FileOutputStream fos = new FileOutputStream(dest+filename); 
      fos.write(buffer, 0, i); 
      fos.flush(); 
      fos.close(); 

      ++count; 
     } 
    } 
+0

謝謝。 (int size = 20)這是否意味着新文件將有20行?! – RGB

+0

沒有,這是我在緩衝區數組中使用的文件的大小。這裏20意味着20字節 –

+0

好吧,但我怎麼能讓每個文件只包含3k?! – RGB