使用Java将CSV文件导入到Oracle数据库

阿罗伊

我收到以下错误

  Java.lang.ArrayIndexOutOfBoundsException: 0
  at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1614)

我正在使用eclipse indigo和oracle 10g。我该如何解决此问题。有人可以帮助我吗?

我想将一个csv文件加载到oracle数据库中。.我创建了一个名为zt的表,该表具有三列(id,s_date,data)。CSV数据包含以下内容:

   a1,2015-04-15 17:40:20.0,18.5786    
   a2,2015-04-15 16:20:59.0,16.7868   
   a3,2015-03-15 16:20:59.0,16.51689    
   a4,2015-04-16 16:20:55.0,24.789028  
   a5,2015-02-15 17:55:59.0,28.784145 

代码

import java.io.FileReader;    
import java.sql.Connection;    
import java.sql.DriverManager;    
import java.sql.PreparedStatement;
import java.sql.Statement;
import au.com.bytecode.opencsv.CSVReader;

public class ImportTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        readCsv();
    }

    public static void readCsv() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn     =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe","system","arry");
            PreparedStatement pstmt =conn.prepareStatement("Insert into zt values(?,?,?)");

            CSVReader reader = new CSVReader(new FileReader("D:\\zzzzzzzz.csv"), ','); 
            String[] nextLine;
            int i = 0;
            while((nextLine = reader.readNext()) != null) {
                i++;
                pstmt.setString(1,nextLine[0]);
                pstmt.setString(2,nextLine[1]);
                pstmt.setDouble(3,Double.parseDouble(nextLine[2]));
            }

            pstmt.close();
            conn.commit();
            conn.close();
        } catch(Exception e) {
            e.printStackTrace();       
        }
    }
}
沙赫卜

对于初学者来说

pstmt.setString(1,nextLine[0]);
pstmt.setString(1,nextLine[1]);
pstmt.setDouble(2,Double.parseDouble(nextLine[2]))

请注意,您重复了两次参数一,如果数据库发出异常,则很可能是原因。

而且

Java中的IndexOutOfBoundsException是运行时异常。如文档中所述

表示某种索引(例如,数组,字符串或向量)的索引超出范围。应用程序可以将该类作为子类来指示类似的异常。

显然,您无需先检查即可访问数组的索引。总是很危险的事情。

我也同意,您的CSV文件似乎不正确,但是您遇到的任何问题都不仅限于此,您应该对此加以防范。我添加了代码以显示基本的防护措施

只需在您的while循环中检查长度,如下所示

 while((nextLine = reader.readNext()) != null){
             i++;
                // Remember length 3 = index 2
                if (nextLine.length == 3){
                    pstmt.setString(1,nextLine[0]);
                    //I have changed it to 2 from 1 
                    pstmt.setString(2,nextLine[1]);
                    pstmt.setDouble(2,Double.parseDouble(nextLine[2]));
             }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Hibernate将CSV文件导入到MySQL数据库

来自分类Dev

使用VB.Net将CSV文件导入到Access数据库

来自分类Dev

使用R将多个csv文件导入到postgresql数据库中(内存错误)

来自分类Dev

使用sql将数据从文件csv导入到Oracle

来自分类Dev

将CSV导入到MongoDB数据库

来自分类Dev

从Windows中的.csv文件将数据导入到mongodb数据库中

来自分类Dev

将CSV文件导入到SQL Server数据库

来自分类Dev

有没有一种方法可以使用javascript和节点模块(oracledb)将csv导入到oracle数据库?

来自分类Dev

无法将dmp文件导入到Oracle 12c数据库(imp-00037)

来自分类Dev

如何将数据从txt文件导入到MySQL数据库

来自分类Dev

Laravel:从 csv 文件导入到带有额外列的数据库

来自分类Dev

将数据库表导入到Algolia

来自分类Dev

WordPress:将MySQL数据库导入到MariaDB

来自分类Dev

将值从数据库导入到选择

来自分类Dev

Rails –如何将文件从本地主机导入到Heroku数据库

来自分类Dev

如何将备份文件大量导入到Postgresql数据库

来自分类Dev

Rails –如何将文件从本地主机导入到Heroku数据库

来自分类Dev

如何将一张excel文件导入到access数据库中?

来自分类Dev

将文本文件导入到 DataGrid 然后保存到数据库

来自分类Dev

使用ASP.NET将Excel数据导入到SQL数据库

来自分类Dev

将数据从CSV文件导入到InfluxDB

来自分类Dev

将数据从 csv 文件导入到 R

来自分类Dev

如何解析文件名,并使用shellscript将数据导入到csv文件中?

来自分类Dev

使用cakephp将数据从csv导入到mysql

来自分类Dev

使用Yii Framework将数据从csv导入到Mysql

来自分类Dev

使用VBA将数据从.csv导入到Excel文档

来自分类Dev

当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

来自分类Dev

一个Perl脚本,可将多个CSV文件导入到MySQL数据库中

来自分类Dev

将BACPAC文件导入到Azure中以创建新数据库,但是数据库级用户似乎未正确导入?

Related 相关文章

  1. 1

    使用Hibernate将CSV文件导入到MySQL数据库

  2. 2

    使用VB.Net将CSV文件导入到Access数据库

  3. 3

    使用R将多个csv文件导入到postgresql数据库中(内存错误)

  4. 4

    使用sql将数据从文件csv导入到Oracle

  5. 5

    将CSV导入到MongoDB数据库

  6. 6

    从Windows中的.csv文件将数据导入到mongodb数据库中

  7. 7

    将CSV文件导入到SQL Server数据库

  8. 8

    有没有一种方法可以使用javascript和节点模块(oracledb)将csv导入到oracle数据库?

  9. 9

    无法将dmp文件导入到Oracle 12c数据库(imp-00037)

  10. 10

    如何将数据从txt文件导入到MySQL数据库

  11. 11

    Laravel:从 csv 文件导入到带有额外列的数据库

  12. 12

    将数据库表导入到Algolia

  13. 13

    WordPress:将MySQL数据库导入到MariaDB

  14. 14

    将值从数据库导入到选择

  15. 15

    Rails –如何将文件从本地主机导入到Heroku数据库

  16. 16

    如何将备份文件大量导入到Postgresql数据库

  17. 17

    Rails –如何将文件从本地主机导入到Heroku数据库

  18. 18

    如何将一张excel文件导入到access数据库中?

  19. 19

    将文本文件导入到 DataGrid 然后保存到数据库

  20. 20

    使用ASP.NET将Excel数据导入到SQL数据库

  21. 21

    将数据从CSV文件导入到InfluxDB

  22. 22

    将数据从 csv 文件导入到 R

  23. 23

    如何解析文件名,并使用shellscript将数据导入到csv文件中?

  24. 24

    使用cakephp将数据从csv导入到mysql

  25. 25

    使用Yii Framework将数据从csv导入到Mysql

  26. 26

    使用VBA将数据从.csv导入到Excel文档

  27. 27

    当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

  28. 28

    一个Perl脚本,可将多个CSV文件导入到MySQL数据库中

  29. 29

    将BACPAC文件导入到Azure中以创建新数据库,但是数据库级用户似乎未正确导入?

热门标签

归档