# *.txt to *.mdb in Java



## uniq (6. Jan 2008)

Hallo erstmal. 

Ich möchte die in Liste.txt vorhandene Datensätze in diese Form in Liste die ich haben will bringen.
Um dann die Datensätze mit Access in eine bestehende Datenbank zu importieren.

Die Datensätze in Liste.txt sind eigentlich mehr und bisher habe ich sie per hand in die Accessdatenbank eingetragen. Mit der Zeit macht das kein Spass mehr .

Die Daten der einzelnen Datensätze in Liste.txt  sind auf  mehrere Zeilen verstreut. Dies bereitet mir Probleme eine geeignete Methode zu definieren um Satz für Satz die Daten auszulesen und in die neue Liste die ich haben will einzutragen.

Ich würde mich über Ideen freuen.

Vielen Dank im voraus.

Gruß


----------



## Guest (6. Jan 2008)

Hallo!

Viel übersichtlicher wäre es, wenn Du Beispiel-Datensätze gleich hier posten könntest.

2 Möglichkeiten:
1) Bereitstellen einer Zwischendatei, die Du dann von Access aus importieren kannst.
2) Dein Programm schreibt direkt in eine MDB-Datei. Weiß nicht, ob es da eine passende Library gibt.

Beste Grüße
G.


----------



## uniq (6. Jan 2008)

Danke für die schnelle Antwort.

Interessant für mich ist die Möglichkeit 1)

Also hier ist mal eine vereinfachte Form meiner Queldatei "Liste.txt". 
Es sind hier 3 Datensätze zu sehen mit unterschiedlichen Daten verteilt auf 3 Zeilen. 
Spaltenposition der Daten sind immer gleich nur die Zeilenposition ändert sich je nach Datensatz. 

Liste.txt






Die Zwischendatei sollte ähnlichen Aufbau haben wie die "Liste die ich haben will.txt"

Liste die ich haben will.txt





Es geht in erster Linie darum nur die nötigen Daten für einen Datensatz einzulesen und nicht alles was in Liste.txt enthalten ist. 

Ich hoffe ich konnte Mein Problem besser darstellen.

Hilfestellung ist herzlichst willkommen

Gruß 
SB


----------



## Ellie (7. Jan 2008)

Erstens brauchst du einen Zugriff auf eine Access-Datenbank. Das geht mit einem entsprechenden Treiber, in Javainsel gab es eine Liste mit Treibern für verschiedene Datenbanksysteme. Wenn du herausgefunden hast, wie du die MDB-Datei mittels Java mit Daten füllst, brauchst du noch eine Funktion, die diese Daten aus deiner TXT-Datei ausliest. Das wird wohl dein Hauptproblem sein.

Edit: Nun, das sind ja immer drei Zeilen mit Info und eine Leerzeile. Dann brauchst du eine Funktion, die immer vier Zeilen einliest, eine gleich überspringt und aus den anderen die nötigen Informationen extrahiert.


----------



## geraldf (7. Jan 2008)

Hallo Uniq,

Du willst
- eine Textdatei einlesen
- den Inhalt parsen
- den Inhalt in geänderter Form wieder ausgeben

Wenn Du es mit Java machen willst, findest Du im Forum sicher reichlich Beiträge.

Definiere einmal genau den Aufbau der Ausgabedatei:
Kopfzeile J/N
Art der Spaltentrennung
Textbregrenzer J/N
Zahlenformate
Zeichenkodierung
Art der Zeilenschaltung

Wenn Du wie jetzt "Person 1" schreibst, wird jedes Programm "Person" und "1" unterschiedlichen Spalten zuordnen.

Teste den Import nach Access mit einer händisch erstellten Testdatei.

Vorschläge zu Spaltennamen:
Verwende keine Minuszeichen, da diese unter SQL eben als Minus interpretiert werden.
Verwende keine Leerzeichen
Verwende keine Umlaute

Viel Erfolg
Gerald


----------



## uniq (7. Jan 2008)

Hallo Geraldf

Danke für deinen Beitrag. 

Ich habe hier in Forum einige Beiträge gelesen, wo es um zeilenweise einlesen von *.txt Dateien geht. Das entspricht aber nicht das, was ich machen möchte. 

Viel mehr schwebt mir sowas vor:

```
Erstelle eine Liste für die Spalte BLZ, Status, Name, KtoNr... usw

int i; // Zeilenindex
int n=4; // Zeilenabstand der einzelnen Daten für eine Spalte ist Konstant 4

//Beispiel einlesen der Werte für BLZ und Status
int j; // Beginn Spaltenposition BLZ
int k; // Ende Spaltenposition BLZ
int r; // Beginn Spaltenposition Status
int s; // Ende Spaltenposition Status
int x; // Zeile in der ein Datensatz beginnt


Gehe zu Datensatz x;
Gehe zu Zeile x+1 // In dieser Zeile sind die Werte für BLZ und Status
           Lese Zeichen j bis k
           Schreibe Zeichenfolge j bis k in die Liste für BLZ
           Lese Zeichen r bis s
           Schreibe Zeichenfolge r bis s in die Liste für Status
Gehe zu Zeile x+1
          Lese Zeichen ... // Hier werden dan die Daten für die restlichen Listen eingelesen.
                     .
                     .
x=x+4; // Gehe zum nächsten Datensatz
```

Und das ganz als Schleife bis kein Datensatz mehr vorhanden ist.

Mein Problem an dieser idee ist diese Stellenweise auslesen aus einer Textdatei. Geht das überhaupt? wenn ja wie könnte die mehthode dazu aussehen?


----------



## geraldf (7. Jan 2008)

Zeilenweises Einlesen ist schon ok.

Mit String#split() kannst Du eine Zeile zerlegen.

Beste Grüße
Gerald


----------

