2011-12-15 79 views
0

我對Java很新。我有兩個步驟的任務。如何使用Java讀取.csv文件並將其數據插入到SQL Server中?

  1. 我想讀取.csv文件中的所有數據。
  2. 讀完這些數據後,我必須把它放到SQL Server數據庫中。

我已經完成了第一步。我能夠讀取.csv文件數據,但我不知道如何將其插入到數據庫中。

這是我用來獲取的.csv文件數據代碼:

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.StringTokenizer; 


public class DBcvsdataextractor { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     String fileName="D:/USPresident Wikipedia URLs Thumbs HS.csv"; 

     try {  
     BufferedReader br = new BufferedReader(new FileReader(fileName));  
      StringTokenizer st = null;  
      int lineNumber = 0, tokenNumber = 0;  

      while((fileName = br.readLine()) != null)  
      {  

       if(lineNumber++ == 0) 
        continue;     

       //break comma separated line using ","  
       st = new StringTokenizer(fileName, ",");  

       while(st.hasMoreTokens())  
       {  
        //display csv values  
        tokenNumber++;  
        System.out.print(st.nextToken() + '\t'); 
       }  

       //new line  
       System.out.println(" ");  

       //reset token number  
       tokenNumber = 0;  

      }  
     } catch (FileNotFoundException e) {  
      // TODO Auto-generated catch block  
      e.printStackTrace();  
     } catch (IOException e) {  
      // TODO Auto-generated catch block  
      e.printStackTrace();  
     } 
    } 
} 

現在,我怎麼插入數據到SQL Server?

+3

「如果你有任何代碼,然後與我分享」???這完全錯了。 – 2011-12-15 07:12:58

+0

嗨gurung ,,我有我已經粘貼的代碼,並沒有任何其他代碼...通過此代碼即時通訊能夠獲得.csv文件數據,但如何將其插入到sql server表, ,如果你有任何代碼或建議,然後plz與我分享... – Rahul 2011-12-15 07:21:48

+1

[停止滾動您自己的CSV分析器!](http://secretgeek.net/csv_trouble.asp)有很多CSV解析器在那裏您可以使用。 – 2011-12-15 07:23:34

回答

1

如果你真的想用Java來做到這一點,真要編寫自己的CSV解析器,你現在所做的,你可以

  1. 而是打印出每個「CSV文件價值」,你會必須存儲它們。例如,您可以使用CSV文件中的每列使用ArrayList,並在讀取CSV文件時填充這些文件
  2. 一旦讀取文件,您可以再次遍歷那些ArrayList實例,爲所有數據構造一個大的INSERT語句,或者您在CSV文件中遇到的每一行有一個INSERT語句。如果您選擇最後一個選項,則甚至不需要使用這些實例。在這種情況下,您可以在讀取CSV文件時構建單獨的INSERT語句,並在每次讀取行後將其提交給數據庫。

我知道構建您的查詢,同時讀取CSV文件將是可能的,如果你想要去的一個大INSERT聲明,但是從CSV文件的讀取分離INSERT的方法具有很大的優勢您可以稍後用標準的解析器替換您自己的CSV解析器,而不會有太多麻煩。

5

SQL Server爲此提供了一個工具。

像這樣:

BULK INSERT CSVTest 
FROM 'c:\csvtest.txt' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 

使用此命令在Java,使用JDBC連接,例如。

希望這會有所幫助。

SQL Server file CSV

相關問題