java - 用Java从SQLite数据库中检索特定数据

标签 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 文件中的值搜索数据库而不需要花费很长时间?

最佳答案

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

alter table table1 add column column1_1;

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

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

然后将您的查找sql​​更改为:

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

这样你的查找会更快

关于java - 用Java从SQLite数据库中检索特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52096862/

相关文章:

sqlite - 时间戳驱动的冲突解决方案是否可行?

python - 如何向仅包含一列且具有自增主键的sqlite表插入数据?

php - 清除 SQLite3 语句上的绑定(bind)似乎不起作用 (PHP)

java - 将图像从 J2ME 客户端上传到 Servlet

Java无法编译运行类

java - Spring Boot + Apache 反向代理 : This combination of host and port requires TLS

java - 在 onCreate 之外调用 setContentView(R.layout.nameOfLayout)

java - Selenium - 等待网络流量

ios - 在 Sqlite 中存储 NSMutableArray

android - Sqlite 不更新行