从Java中的SQLIte数据库检索特定数据

时间:2018-08-30 12:15:52

标签: java sqlite

我有一个300GB的sqlite数据库,其中包含数十亿条记录。它存储在本地计算机上。

我想在sqlite数据库中搜索数据,如果找到该行,则返回该行。 我想根据csv文件中的值从此sqlite数据库中检索数据。

    String csvfile = "C:/documents/parsed - Copy.csv";
    String line = "";
    String csvSplitBy = ",";
    BufferedReader br = new BufferedReader(new FileReader(csvfile));

    String sql = "select substr(hex(column1),5,12),column2,colum3 from table1 where substr(hex(column1),5,12) = ?";
    try (Connection conn = this.connect();
            PreparedStatement stmt = conn.prepareStatement(sql)){
        while ((line = br.readLine()) != null) {
            String[] cols = line.split(csvSplitBy);
            stmt.setString(1, cols[1]);
            ResultSet rs = stmt.executeQuery()
            if (rs.next()) {
                System.out.println("found");}
            else
               System.out.println("not found");

我如何基于一个单独的较小的csv文件中的值搜索数据库,而不是花很长时间?

1 个答案:

答案 0 :(得分:0)

如果不是一次操作,则可以选择向table1再添加一列,例如column1_1

alter table table1 add column column1_1;

然后使用值substr(hex(column1),5,12)填充column1_1

update table1 set column1_1 = substr(hex(column1),5,12);

然后将您的查询sql更改为:

String sql = "select column1_1,column2,colum3 from table1 where column1_1 = ?";

这样,您的查找将更快