2011-12-15 76 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

相关问题