Auslesen DatenbanktabelleDatei iSeries

Ollek

Bekanntes Mitglied
Hallo,

ich habe folgendes Problem.

Wenn ich eine Datei auf einer iSeries anlege und diese mit folgendem SQL fülle.

select 'lalalala', number from bib/tabelle

Steht in meiner Tabelle auf der Datenbank

lalalala 100

Wenn ich diese Daten nun abfrage mit Java, und in einer CSV speichere. Dann werden die Daten völlig falsch ausgegeben und zwar so:

938193819381A2;2;

Das lalala wird in Zahlenumgewandelt.. Warum auch immer.. Hat jemand so ein problem schon gehabt?
Bräuchte dort dringend hilfe :rtfm:

Viele Grüße
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
in jedem Fall ist es komplett unsinnig, zwei Schritte auf einmal zu machen,
damit wird nur die Fehlerquelle verschleiert, einen anderen Nutzen ergibt sich daraus nicht,

wann immer irgendwo auf der Welt ein Problem auftritt muss es möglichst eingegrenzt untersucht werden,
gib das, was du aus der Datenbank ausliest, mit System.out.println() aus!, oder gib die Länge des Strings aus,
zähle mit einer Schleife wie oft ein char 'a' drin ist/ wie oft '9',

wenn dabei alles ok ist, dann ist erstmal anzunehmen, dass die DB nicht das geringste mit dem Problem zu tun hat,
anderenfalls ist anscheinend die CVS-Ausgabe komplett egal
-> in jedem Fall das Problem (normalerweise) um 50% reduziert, danach kann man weiter nachschauen
 

Ollek

Bekanntes Mitglied
Wieso 2 Schritte auf einmal? Versteh nicht, was du damit meinst...

Mein erster Schritt ist es, auf der iSeries eine Datei in meiner Bib anzulegen. Diese Datei fülle ich
mit einem SQL Select Statement.
In diesem SQL Statement gebe ich eine Konstante hier Beispiel 'lalala' in Hochkommata ein und eine nummer aus der Tabelle auf diese ich das SQL ausführe.
Mein Programm holt sich lediglich die Daten aus der Datei in meiner Bib. Wo siehst du 2 Schritte? Der eine ist manueel von mir ausgeführt und mein Programm führt lediglich das abholen aus.. Oder habe ich dich falsch verstanden??

Habe es schon mit syso schon vor meinen Beitrag einmal ausgegeben... Erhalte dort schon die falsche Ausgabe.. Sprich am Schreiben in die CSV kann es nicht liegen.. Es muss auf den Weg von DB in mein ResultSet liegen...

Mein Code:

Java:
exceuteSelect(String system, String sql, String saveDir){
		Connection conn = DatabaseUtil.getInstance().openConnectionToAS400(system, prop.getDb_user(), prop.getDb_password());
		ResultSet rs = null;
		boolean split = false;
		try {
			sql = sql.replace("/", ".");
			PreparedStatement pStmt = conn.prepareStatement(sql);
		
			rs = pStmt.executeQuery();
			
			ArrayList<String[]> arrlDataSet = new ArrayList<String[]>();
			int iRow = rs.getMetaData().getColumnCount();

			// Wenn Header true ist, Header setzen
			if(exportsetting.isHeader()){
				String[] arrRowNames = new String[iRow];
				for(int i = 0; i < iRow; i++)
					arrRowNames[i] = rs.getMetaData().getColumnName(i+1);
				
				arrlDataSet.add(arrRowNames);
			}
			
			while(rs.next()){
				
				String[] arrRows = new String[iRow];
				for(int i = 0; i < arrRows.length; i++){
					
					String strRow = rs.getString(i+1);
					if(strRow != null){
						strRow = strRow.trim();
					}
					
					if(exportsetting.isTextkennzeichen() && strRow != null){
						if(strRow.matches("\\D*"))
						    arrRows[i] = strRow;
						else
							arrRows[i] = "\"" + strRow + "\"";
						
					} else {
						arrRows[i] = strRow;
					}
				}
				
				arrlDataSet.add(arrRows);
				
				if(arrlDataSet.size() > 1000){
					csvFac.writeCSV(saveDir, arrlDataSet, ';', split);
					split = true;
					arrlDataSet.clear();
				}
			}
			
			csvFac.writeCSV(saveDir, arrlDataSet, ';', split);
			
			return true;
		} catch (SQLException e) {
			log4jLogger.log(Level.ERROR, this.getClass(), "Statement [" + sql +"] konnte nicht ausgeführt werden", e);
			
			generateExceptionPane(e);
			
			return false;
		} finally { DatabaseUtil.getInstance().closeConnectionToAS400(); }
	}

Komme leider nicht weiter...
 
S

SlaterB

Gast
> Wieso 2 Schritte auf einmal? Versteh nicht, was du damit meinst...
+
> Habe es schon mit syso schon vor meinen Beitrag einmal ausgegeben... Erhalte dort schon die falsche Ausgabe.. Sprich am Schreiben in die CSV kann es nicht liegen..

hast du wirklich nicht verstanden wie ich 1. Schritt: DB, 2. Schritt CSV beschrieben habe?

du hast nun selber schon erkannt dass CSV nichts damit zu tun hast,
erkennst du wieviel z.B. allein von der Überschrift 'Auslesen Datenbanktabelle - Fehler bei Datenausgabe in CSV' jetzt irrelevant ist?
fast alles ab dem - kann man jetzt streichen, CSV ist überhaupt nicht mehr relevant im Thema

------

jedenfalls fast, dein Code enthält gar keine System.out.println(), damit ist das noch nicht geklärt,
was genau hast du mit welchen Ergebnissen alles schon getestet?

du hantierst da mit einem Set von Arrays, gibst du zufällig das Array an sich aus (dessen toString() nur Müll liefert)
oder doch korrekt die einzelnen Elemente?
deine System.out.println()-Befehle wären interessant oder alternativ eben doch, was
> csvFac.writeCSV(saveDir, arrlDataSet, ';', split);
mit dem Set der Arrays macht
 

Ollek

Bekanntes Mitglied
Java:
System.out.println(rs.getString(i+1));
System.out.println(rs.getCharacterStream(i+1));

Das sind so 2. Ich weiß nicht, wo ich sonst noch Sysos einbauen soll...

Also mir kommt es so vor, als wenn im resultSet schon die falschen Daten stehen..
Die .toString() Methode rufe ich nirgends auf.. Arbeite eigentlich alle einzelnen Elemente im RS ab.

ich hole mir nur immer aus dem rs die Daten mit rs.getString()

die von dir angesprochende Methode schreibt die Daten aus dem RS set, welche in eine ArrayList hängen in deine Datei. Das Split ist dabei die boolean, ob schon daten in der Datei stehen oder nicht, denn wenn eine Menge von Daten im ResultSet stehen schreibe ich alle 1000 in die Datei, damit de schnelligkeit der abarbeitung weiterhin gegeben ist...
 

inv_zim

Gesperrter Benutzer
Mal vorweg noch zwei Fragen: Datentypen in beiden Dateien sind identisch? Die EBCDIC Kodierung auf den iSeries ist auch nicht das Problem?
 
S

SlaterB

Gast
hmm, ich fürchte dass ich dazu nichts weiter kontrollier beitragen kann, zwei Dinge noch:

- erzähle mehr darüber worum es geht, falls das dem geneigten Publikum nicht klar sein sollte, aber ob das genau hier reinschaut?
was ist 'iSeries' (habe ich jetzt in den Titel geschrieben, lockt vielleicht die richtigen an),
was ist 'openConnectionToAS400', anscheinend eine Methode von dir, im Internet sonst nicht zu finden,
dessen Code ist vielleicht interessant,

um welche Datenbank geht es genau, was kannst du alles zur Konfiguration erzählen,
vielleicht irgendwas Richtung CharSet/ Encoding wichtig,
usw.

- funktioniert der Gegenweg, kannst du etwas von Java in die Datenbank schreiben, einen String "Hallo"?
wie wird dieser dann von Java ausgelesen und wie sieht er unter anderen Tools aus, die vielleicht "lalalala" korrekt darstellen?

- ganz entfernt ein Strohhalm:
speichere in der DB "abcdef..0123..", wird jedes Zeichen exakt zu irgendwas komischen in Java?
welches du zumindest dann temporär kontrollliert zurückkodieren könntest? ;)
 

Ollek

Bekanntes Mitglied
Wir haben hier mal rumgeforscht..
Es lag daran, dass eine falsche CCSID auf der iSeries benutzt wird.

Kann man mit dem JDBC Treiber die CCSID beim anemlden an der iSeries übergeben??
 

Ollek

Bekanntes Mitglied
Problem gelöst..

Ich habe den Connectionsstring um folgendes erweitert:

Java:
;translate binary=true

Fehler tritt nicht mehr auf...!
Danke für eure Hilfe!

:toll:
 

dereos

Neues Mitglied
Hallo,

ich habe folgendes Problem.

Wenn ich eine Datei auf einer iSeries anlege und diese mit folgendem SQL fülle.

select 'lalalala', number from bib/tabelle

Steht in meiner Tabelle auf der Datenbank

lalalala 100

Wenn ich diese Daten nun abfrage mit Java, und in einer CSV speichere. Dann werden die Daten völlig falsch ausgegeben und zwar so:

938193819381A2;2;

Das lalala wird in Zahlenumgewandelt.. Warum auch immer.. Hat jemand so ein problem schon gehabt?
Bräuchte dort dringend hilfe :rtfm:

Viele Grüße

Hi,

schön das du eine Lösung gefunden hast :)
Ich hatte letztens ein ähnliches Problem

Gruß
Thomas
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
L Oracle Oracle Datumsspalte auslesen Datenbankprogrammierung 5
A Umsätze der Bank auslesen Datenbankprogrammierung 7
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
L MySQL ResultSet vollständig auslesen Datenbankprogrammierung 20
K SQLite Datenbank in App integrieren: Vor Auslesen schützbar? Datenbankprogrammierung 6
K Java Datenbank auslesen Datenbankprogrammierung 8
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
J Onlinedatenbank einmalig auslesen Datenbankprogrammierung 1
E Wie kann ich textdateien, die als BLOB abgespeichert sind, aus der Datenbanktabelle auslesen? Datenbankprogrammierung 23
C MySQL Datenbank auslesen/beschreiben und Zusatz Datenbankprogrammierung 1
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
E primaryKey auslesen - Datensätze abgleichen Datenbankprogrammierung 4
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
R MS-Access mit JAva auslesen Datenbankprogrammierung 7
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
N HSQLDB Daten Auslesen Datenbankprogrammierung 3
E Werte auslesen Datenbankprogrammierung 3
O Metadaten / DatenbankAttribute Auslesen Datenbankprogrammierung 4
D Alle Werte aus DB auslesen und in Chart darstellen Datenbankprogrammierung 6
C H2 Letzten Eintrag auslesen Datenbankprogrammierung 6
D MySQL Bild aus DB auslesen und auf FTP Speichern Datenbankprogrammierung 7
N Oracle txt. Datei auslesen-> verändern-> einlesen Datenbankprogrammierung 7
M JPA - Datenbanktabellen auslesen Datenbankprogrammierung 14
F NUR 3 datensätze auslesen Datenbankprogrammierung 6
M Datenbank (MySQL) auslesen Datenbankprogrammierung 3
S MySQL Datenbank auslesen - Treiberproblem Datenbankprogrammierung 12
F MySQL SSH Datenbank auslesen Datenbankprogrammierung 3
D Blob MimeTyp auslesen Datenbankprogrammierung 2
S Verschiedene Informationen gleichen Typs speichern und auslesen Datenbankprogrammierung 4
A PostgreSQL anfängerfrage: resultset zeilenweise auslesen Datenbankprogrammierung 2
D Hibernate: ArrayList in DB speichern und auslesen Datenbankprogrammierung 4
S Werte aus Datenbank auslesen und in eine bestimmte Excelzelle eintragen Datenbankprogrammierung 2
P MySQL Objekt aus BLOB auslesen Datenbankprogrammierung 3
B String aus txtDatei auslesen und in Datenbank schreiben. Datenbankprogrammierung 8
B häppchenweises auslesen "lazy loading" von Datenbank Datenbankprogrammierung 13
D Csv auslesen und in mysql db schreiben Datenbankprogrammierung 9
K PostgreSQL PDF-Dateien in Datenbank speichern und auslesen Datenbankprogrammierung 4
E Datenbank auslesen mit JAVA Datenbankprogrammierung 2
W MySQL Datenbanken auslesen Datenbankprogrammierung 3
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
J Tabelle auslesen- knifflig Datenbankprogrammierung 7
W bestimmte Zeile mit bestimmter Spalte auslesen Datenbankprogrammierung 11
Plastagen DBC Dateien korrekt auslesen Datenbankprogrammierung 2
O vernümpftig Datumsangabe in mySQL DB speichern und auslesen Datenbankprogrammierung 4
M Derby insert, ID auslesen Datenbankprogrammierung 3
S Java objekt in MYSQL auslesen Datenbankprogrammierung 32
R Update Time auslesen Datenbankprogrammierung 2
A Datenbankanbindung an mySQL und Ein-/Auslesen der Daten Datenbankprogrammierung 4
MQue speziell Auslesen aus Datenbank Datenbankprogrammierung 5
C MP3 in DB als Blob, wieder auslesen und als MP3 speichern??? Datenbankprogrammierung 8
Antoras Passwort aus DB auslesen Datenbankprogrammierung 12
V tabellenName aus den Metadaten auslesen Datenbankprogrammierung 4
L primärschlüssel auslesen Datenbankprogrammierung 6
G Bild aus als OLE-Typ aus MS Acces auslesen Datenbankprogrammierung 3
G Namen der Datebank aus einer Connction auslesen Datenbankprogrammierung 3
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
S ResultSet variabel auslesen Datenbankprogrammierung 4
G Daten schneller aus einer DB auslesen Datenbankprogrammierung 9
T Metadaten Auslesen Datenbankprogrammierung 7
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
A Auslesen von Werten aus der DB in eine csv-Datei Datenbankprogrammierung 4
A Auslesen aus einer csv-Datei Datenbankprogrammierung 2
N Unbekannte Datenbank über Metadaten auslesen? Datenbankprogrammierung 9
A Funktionale Abhängigkeiten auslesen Datenbankprogrammierung 4
T Datenbanknamen eines Datenbankservers auslesen Datenbankprogrammierung 9
thE_29 Byte auslesen mit MS SQL Server Datenbankprogrammierung 4
W Auslesen von Tabellen einer MYSql Datenbank Datenbankprogrammierung 25
M Preparedstatement SQL-string auslesen Datenbankprogrammierung 13
M Mysql datenbank auslesen und mittels servlet wiedergeben Datenbankprogrammierung 3
G Oracle-Record auslesen Datenbankprogrammierung 2
M Letzter Datensatz mit auslesen(brauch kleinen Tipp) Datenbankprogrammierung 15
G Spalten Namen auslesen und Zeilen daten auslesen Datenbankprogrammierung 17
F JDBC Abfrage Werte auslesen Datenbankprogrammierung 2
V mysql - tree auslesen und richtig ordnen Datenbankprogrammierung 4
G DB auslesen und in ein JTextArea schreiben Datenbankprogrammierung 3
Z Auslesen aus einer mySQL Datenbank Datenbankprogrammierung 4
P MYSQL werte aus liste auslesen und anderen damit updaten Datenbankprogrammierung 4
T Creates der Datenbank auslesen Datenbankprogrammierung 10
W datenbankschema auslesen Datenbankprogrammierung 3
S Daten aus einer MySQL-Datenbank auslesen Datenbankprogrammierung 7
S metadaten/Tabellen des sqlservers auslesen Datenbankprogrammierung 8
S Tabellen auslesen in einer DB Datenbankprogrammierung 14
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
M MySQL Tabellen in java auslesen? Datenbankprogrammierung 5
L DB Felder in einem Array speichern und wieder auslesen Datenbankprogrammierung 11
V MAX Wert und weitere auslesen Datenbankprogrammierung 2
D Zufällige Zeile auslesen Datenbankprogrammierung 6
G Auslesen und in TextBox anzeigen lassen Datenbankprogrammierung 7
D Problem mit auslesen deiner DBase Datenbank Datenbankprogrammierung 8
R Einen Integer-Wert aus einer MySQL DB auslesen Datenbankprogrammierung 2
G speichern und auslesen von daten aus einer datenbank Datenbankprogrammierung 8
X Vectoren in mySQL-Datenbank speichern und auslesen Datenbankprogrammierung 8
L Tabellennamen auslesen Datenbankprogrammierung 2
M Tablen auslesen und als Tree anzeigen lassen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben