java - 从 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_1substr(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 = ?";
这样你的查找会更快
推荐阅读
- perl - 如何在 Perl Socket 模块中增加 sndbuf/rcvbuf 大小的套接字选项?
- java - 当 JAXBElement 值为 null 时,将 JAXB 注释的 PoJo 转换为 Json 时排除 null 属性
- winappdriver - WinAppDriver 不适用于侧面加载的通用应用程序
- vba - 设置框架语句中的类型不匹配
- sql-server - 重置 SSMS 的对象资源管理器详细信息的排序顺序
- python - 如何在 Pandas 数据框中命名列和索引?
- c# - datagrid customsorting BindingListCollectionView 输入 ListCollectionView 错误
- c++ - “ ans += (a[i] - ans * r > 0); ”是什么意思,其中 ans,r 是整数, a[i] 是数组元素?
- python - 当函数退出范围时,函数内部的 subprocess.Popen 调用是否会被垃圾收集?
- python - 在触发器中使用通配符时云功能部署失败