Импорт .csv в SQLite на Java

Мне нужно написать программу, которая автоматически считывает мой .csv и помещает данные в мой SQLite. Этот код заполняет первую строку в моей таблице, которую я создал ранее. Как пропустить / перейти к следующей строке, чтобы заполнить ее?

Я предполагаю, что это что-то в петле, но я не уверен, что изменить ...

(Я пропустил первую строку, потому что она содержит столбцы.)

Код:

public static void read()
 {
  String csv = "C:\\Users\\schneider\\Desktop\\Schneider\\Excel\\DienstbarkeitenTabelle.csv";
  BufferedReader br = null;
  String line = "";
  String csvSplitBy = ",";
  int currentLine = 0;
  Connection conn = null;

  try
  {
      conn = DriverManager.getConnection("jdbc:sqlite:C:/sqlite/db/tollerName");
      PreparedStatement prep = conn.prepareStatement("insert into tollerName(Bauprojekt, Bauprojektnummer, Auftragsnummer,Trassierung, JahrSAP, ProjektnummerSPA, Anlagenzahl, AktuelleLeitungslaenge, VorgaengeZumProjekt, VertraegeZumProjekt, Firma, Flurst, Blatt, Verf, Anl, RE, LL, BreiteSS, FlaecheRA, Entsch, Haupteigentuemer, Gemarkung, Grundbuchamt, Strase, Hausnummer, Hausnummerzusatz, Ort, plz, VkWert, prozentBPD, Anlage, GFR, GBA, Empfaenger, Bank, IBAN, BIC, von, an, JahrDerVergabe, Zahlungsgrund, Netto, Aufwand, Umsatzsteuer) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

      br = new BufferedReader(new FileReader(csv));
      while((line = br.readLine()) != null)
      {
          if (currentLine > 0)
          {
              String[] table = line.split(csvSplitBy);
              prep.setString(1, (table[0]));
              prep.setString(2, (table[1]));
              prep.setString(3, (table[2]));
              prep.setString(4, (table[3]));
              prep.setString(5, (table[4]));
              prep.setString(6, (table[5]));
              prep.setInt(7, Integer.parseInt(table[6]));
              prep.setDouble(8, Double.parseDouble(table[7]));
              prep.setInt(9, Integer.parseInt(table[8]));
              prep.setInt(10, Integer.parseInt(table[9]));
              prep.setString(11, (table[10]));
              prep.setString(12, (table[11]));
              prep.setString(13, (table[12]));
              prep.setString(14, (table[13]));
              prep.setString(15, (table[14]));
              prep.setString(16, (table[15]));
              prep.setDouble(17, Double.parseDouble(table[16]));
              prep.setDouble(18, Double.parseDouble(table[17]));
              prep.setDouble(19, Double.parseDouble(table[18]));
              prep.setDouble(20, Double.parseDouble(table[19]));
              prep.setString(21, (table[20]));
              prep.setString(22, (table[21]));
              prep.setString(23, (table[22]));
              prep.setString(24, (table[23]));
              prep.setString(25, (table[24]));
              prep.setString(26, (table[25]));
              prep.setString(27, (table[26]));
              prep.setString(28, (table[27]));
              prep.setDouble(29, Double.parseDouble(table[28]));
              prep.setDouble(30, Double.parseDouble(table[29]));
              prep.setString(31, (table[30]));
              prep.setString(32, (table[31]));
              prep.setString(33, (table[32]));
              prep.setString(34, (table[33]));
              prep.setString(35, (table[34]));
              prep.setString(36, (table[35]));
              prep.setString(37, (table[36]));
              prep.setString(38, (table[37]));
              prep.setString(39, (table[38]));
              prep.setString(40, (table[39]));
              prep.setString(41, (table[40]));
              prep.setDouble(42, Double.parseDouble(table[41]));
              prep.setDouble(43, Double.parseDouble(table[42]));
              prep.setDouble(44, Double.parseDouble(table[43]));
              prep.execute();
              conn.commit();
          }
          currentLine++;
      }
  }

  catch (Exception e)
  {
      e.printStackTrace();
  }

  finally
  {
      if (br == null)
      try
      {
          br.close();
      }

      catch (IOException e)
      {
          e.printStackTrace();
      }
  }

  System.out.println("müsste feddich sein");

}

Почему бы вам не использовать SQLite напрямую? stackoverflow.com/a/24582022/9455968

user9455968 27.03.2018 15:31

Конечно, я мог бы это сделать, но я должен сделать это для ряда файлов .csv, и моя задача - написать код для этого.

PilotKot 27.03.2018 15:41

Вы вставляете только одно значение в подготовленный оператор. Для столбца «Bauprojekt» первое значение из файла csv. Вам нужно добавить значение для каждого столбца. Без дополнительной информации трудно помочь.

Flah 27.03.2018 16:16

Вы только вставляете, если currentLine > 0. Первый раз в вашем цикле currentLine равен 0, поэтому первая строка никогда не будет вставлена.

vanje 27.03.2018 16:22

@Flah Это вещь .. Как мне вставить вторую строку в SQLite?

PilotKot 28.03.2018 08:46

@vanje да, я знаю. Мои столбцы в первой строке

PilotKot 28.03.2018 08:47

Ты хоть прочитал весь пост?

PilotKot 28.03.2018 08:51

я правильно отредактировал свой вопрос

PilotKot 28.03.2018 10:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
8
523
1

Ответы 1

Вы инициализируете currentLine равным 0, при первом прохождении в вашем цикле условие if (currentLine > 0) ложно, поэтому первая строка не вставляется.

если вы не удалили какую-то важную часть своего кода, тест бесполезен. currenltLine увеличивается только начиная с 0, он никогда не может быть отрицательным или нулевым.

Моя первая строка содержит столбцы ... Моя проблема состоит в том, чтобы поместить туда другие строки. извините за то, что не объяснил это должным образом

PilotKot 28.03.2018 08:48

Другие вопросы по теме