Получить конкретные данные из базы данных SQLIte в Java - PullRequest
0 голосов
/ 30 августа 2018

У меня есть база данных sqlite объемом 300 ГБ с более чем миллиардами записей. Хранится локально на машине.

Я хочу найти данные в базе данных sqlite и вернуть строку, если она найдена. Я хочу получить данные из этой базы данных sqlite на основе значений из файла CSV.

    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 голосов
/ 30 августа 2018

если это не однократная операция, вы можете добавить еще один столбец в таблицу1, скажем, 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 = ?";

таким образом, ваш поиск будет намного быстрее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...