如何使用Java读取.csv文件并将其数据插入SQL Server?

我是Java的新手。 我有两个步骤的任务。

  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?

如果你真的想用Java做这件事,并且真的想像你现在那样编写自己的CSV解析器,你可以

  1. 您不必打印出每个“CSV文件值”,而是必须存储它们。 例如,您可以为CSV文件中的每一列使用ArrayList ,并在读取CSV文件时填充这些列
  2. 读取文件后,可以再次遍历这些ArrayList实例,为所有数据构造一个大的INSERT语句,或者为CSV文件中遇到的每一行构建一个INSERT语句。 如果您选择最后一个选项,则甚至不必使用这些ArrayList实例。 在这种情况下,您可以在读取CSV文件时构造一个单独的INSERT语句,并在每次读取一行后将其提交给DB。

我知道在读取CSV文件的同时构建查询的方法也是可行的,如果你想要一个大的INSERT语句,但是将INSERT与CSV文件的读取分开有一个很大的好处就是你可以替换你自己的CSV解析器后来由标准的解析器没有太多麻烦。

SQL Server有一个工具。

喜欢这个:

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

例如,在java中使用此命令,使用JDBC连接。

希望这可以帮助。

SQL Server文件CSV