Wczytanie danych txt do bazy

0

Witajcie.
Jestem nowy na forum zatem witam wszystkich bardzo serdecznie. Javy zacząłem uczyć się nie dawno, sam. Stanąłem przed pewnym problem który mam do rozwiązania i chciałbym Was prosić o pomoc. Mam już okodowany cały interfejs graficzny, łącznie z otwieraniem plików. Teraz chciałbym zrobić następującą rzecz. Po wciśnięciu wczytaj, chciałbym wczytać wybrany plik do bazy danych. Problemów jest kilka. Po pierwsze plik nie ma nagłówków więc muszę czytać po fragmencie i zapisywać go do odpowiednich kolumn w bazie. Na szczęście jest to plik stałopozycyjny gdzie każda dana oddzielona jest potokiem. Czyli mam np coś takiego:


dana1|dana2        |      dana3|   dana4|              dana5|
dana1|dana2        |      dana3|   dana4|              dana5|
dana1|dana2        |      dana3|   dana4|              dana5|
dana1|dana2        |      dana3|   dana4|              dana5|

Tak wygląda mój pliczek. Czy mógłbym Was prosić o jakąś podpowiedź w jaki sposób najlepiej to wczytać i w jaki sposób przede wszystkim przydzielić konkretną daną do konkretnej kolumny w bazie. Z góry wielkie dzięki. Pozdro.

0

Odczytujesz po kolei substringi z kolejnych linijek, usuwasz spacje, spróbujesz przekonwertować na typ zgodny z typem danej kolumny. Jak masz to juz rozbite, albo przez ORMa albo bezposrednio przez SQL do bazy.

0

może
np dla
Pies|4|jakies tam | inne rzeczy
Kot|2| eowkgohrek pr
Zebra|6|hytokhokr | rehrtjatr | erhetjrth

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class Animal {
    private String name;
    private Integer age;

    public Animal(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " Age: " + age;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Animal> animals = new ArrayList<>();

        Function<String, Animal> lineToAnimal = (l) -> {
            String[] f = l.split("\\|");
            return new Animal(f[0], Integer.parseInt(f[1]));
        };

        try (Stream<String> lines = Files.lines(Paths.get("test.txt"))) {
            animals = lines.map(lineToAnimal).collect(Collectors.toList());
        } catch (IOException io) {
            io.printStackTrace();
        }

        System.out.println(animals);
    }
}

lecz nie wiem czy to dobry sposób jestem newbie i próbuję uczyć się javy8

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0