Import einer csv-Datei in eine H2-Database

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Gibt es eine Möglichkeit, eine csv-Datei in eine H2-Datenbank zu importieren?
 
T

tuxedo

Gast
Einfache Antwort: Ja, sogar mehrere. ;-)

Was willst du noch wissen?
 
T

tuxedo

Gast
Entweder du bastelst dir ein kleines (Java?)Programm das die CSV einliest und die Daten in ein oder mehrere Statements bastelt und diese(s) dann ausführt, ODER du schaust in's Handbuch von H2 und prüfst ob H2 einen Befehl anbietet mit dem man CSV direkt importieren kann.
 
G

Guest

Gast
Code:
package org.h2.tools;
import java.sql.*;

public class Test 
{
  public static Connection connection;
  public static String lese, schreibe;
  public static Statement stmt;
  public static ResultSet result;
  
  public static void main(String[] a) throws Exception 
  //public static void verbindung() throws Exception
  {
    Class.forName("org.h2.Driver");
    connection = DriverManager.
      getConnection("jdbc:h2:tcp:localhost/test", "sa", "");
      System.out.println("Verbindung hergestellt"); 
    // add application code here
    
    ResultSet rs = Csv.read("test.csv", null, null);
	ResultSetMetaData meta = rs.getMetaData();
	while(rs.next()) 
	{
    	for(int i=0; i<meta.getColumnCount(); i++) 
    	{
        	System.out.println(meta.getColumnLabel(i+1) + ": " + rs.getString(i+1));
    	}
    	System.out.println();
	}
	rs.close();
    
    lese = "Select * from test";
	stmt = connection.createStatement();
	 	
	result = stmt.executeQuery(lese);
	System.out.println(result);
	
	StartFrame frm = new StartFrame("Hauptseite");
	frm.setVisible(true);
	frm.setSize(400,400);
	frm.setLocation(0, 0);
	frm.pack();
  }
}

Hier bekomme ich die Fehlermeldung:
non-static method read(java.lang.String,java.lang.String[],java.lang.String) cannot be referenced from a static context
ResultSet rs = Csv.read("icd_2008.csv", null, null);

Was mache ich falsch?
 
T

tuxedo

Gast
a) Woher sollen wir wissen was die Klasse Csv macht?
b) Du greifst auf eine read() Methode der Csv-Klasse zu, welche nicht als "static" deklariert ist (non-static method cannot be referenced from a static context -> lesen bildet!)
c) Du benutzt keine Try/Catch-Blöcke. Folglich kannst du kein e.printStackTrace(); machen.
d) Mir scheint du hast einige Basics von Java nicht verinnerlich

- Alex
 
G

Guest

Gast
@ alex0801

Ich habe das Beispiel aus dem Handbuch von H2. Da steht:

Reading a CSV File from a Java Application

It is possible to read a CSV file without opening a database. Example:

Code:
ResultSet rs = Csv.read("test.csv", null, null);
ResultSetMetaData meta = rs.getMetaData();
while(rs.next()) {
    for(int i=0; i<meta.getColumnCount(); i++) {
        System.out.println(meta.getColumnLabel(i+1) + ": " + rs.getString(i+1));
    }
    System.out.println();
}
rs.close();

Lesen kann ich auch, aber wie kann ich das jetzt so umbauen, dass ich es auslesen kann?
 
T

tuxedo

Gast
Tja, da scheint die Anleitung etwas "knapp" gehalten zu sein.

Die Csv Klasse kannst du nicht statisch verwenden. Du musst davon erst ein Objekt erzeugen ...weil:

Code:
public ResultSet read(String fileName, String colNames[], String charset)
        throws SQLException
Da ist halt nix mit "static" in der Methodensignatur.

Eine CSV-File kannst du aber auch mit einem FileReader zeilenweise auslesen und mit String#split() jeweils eine Zeile in ein String[] wandeln. Dann hast du im String[] die einzelnen Spalten der Zeile.

Daraus generierst du dir dann pro Zeile einfach ein SQL-Statement (INSERT blablabla). Die Statements kannst du dann entweder wieder ein eine File stecken und zwischenspeichern, oder du führst die gleich mit dem H2 jdbc auf der H2 Datenbank aus.

- Alex
 
G

Guest

Gast
@ alex0801

habs anders lösen können - mit Hilfe von Access und csv-Dateien. Bisschen umschupsen, insert-Anweisung einbinden - fertig.
 
T

tuxedo

Gast
Access? Nein wie eklig. Hoffe du hast das nur als Zwischenstation genommen. Denn hier sind schon etliche mit Access verzweifelt. Hab auch noch keinen gesehen der Access in Verbindung mit Java empfehlen konnte.

- Alex
 

DocRandom

Top Contributor
..och alex, Abszess (Access) ist doch was nettes *fg*
Zumindest nur solange es in meiner VM läuft!

lg
DocRandom
 

HoaX

Top Contributor
gut dass direkt über dem beispeil das gast gepostet hat in der doku steht dass auch ein "SELECT * FROM CSVREAD('test.csv');" funktioniert ... ganz ohne java, sogar über weboberfläche ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
baykara MySQL CSV IMPORT Datenbankprogrammierung 6
M CSV Import - Dynamisches SQL Statement Datenbankprogrammierung 15
C Über Classpath MongoDB Treiber einbinden und korrekte import Pfade Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
O import in die Datenbank mit Threading Datenbankprogrammierung 3
T Datei import und Datumsformat Datenbankprogrammierung 4
O MySQL Xampp dump-import in Java Datenbankprogrammierung 9
A The import javax.persistence cannot be resolved Datenbankprogrammierung 1
L HSQLDB sichern (import und export von DB) Datenbankprogrammierung 3
G import Oracle.jdbc*; Datenbankprogrammierung 6
A DTS Export/Import MS-SQL Server 2000 Datenbankprogrammierung 3
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
D Zweckmäßigkeit einer Schlüsseltabelle Datenbankprogrammierung 4
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
S Anmelden an einer msql datennbank Datenbankprogrammierung 1
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
ralfb1105 Oracle Zwei ojdbc Driver in einer Applikation? Datenbankprogrammierung 13
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
MrSnake Hilfe bei erstellen einer DB Datenbankprogrammierung 12
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
E Wie kann man mit einer ID-Spalte über eine Parameterübergabe auf eine Seite verweisen? Datenbankprogrammierung 17
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
E Wie geschieht der konzeptueller Entwurf einer Datenbank Datenbankprogrammierung 1
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
J Realisierung einer DB in Combi mit Java Datenbankprogrammierung 13
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S Auswahl einer Datenbank Datenbankprogrammierung 0
M Derby/JavaDB Speicherplatz einer Zeile bestimmen Datenbankprogrammierung 0
P JPA in einer größeren Java SE Anwendung Datenbankprogrammierung 0
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
L MySQL Uhrzeit-Format innerhalb einer Tabelle Datenbankprogrammierung 8
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
L Datenbankabfrage mit einer Range Datenbankprogrammierung 3
S Anbindung einer Datenbank an Java Datenbankprogrammierung 7
H ResultSet is closed tritt bei JSF aber nicht bei einer Java-Applikation auf Datenbankprogrammierung 10
eskimo328 Datenbankverbindung ohne Passwort im Quelltext bei einer offline Anwendung Datenbankprogrammierung 14
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
A Oracle Update Befehl in Datenbank anhand einer Schleife Datenbankprogrammierung 8
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
D Sperrverfahren in einer Datenbank Datenbankprogrammierung 6
B Feld in einer @Entity als Text speichern Datenbankprogrammierung 5
G Oracle Hibernate M:N-Beziehung mit nur einer vorhandenen Tabelle Datenbankprogrammierung 5
M MySQL Auto-Increment einer custom formatted id? Datenbankprogrammierung 2
F Oracle ResultSet zu einer HashMap<Integer, String[]> Datenbankprogrammierung 6
M DB: Mehrere Zeilen in einer Zeile zusammenführen Datenbankprogrammierung 10
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
D Frage zu potenziellen Leerzeichen in einer Datenbank Datenbankprogrammierung 5
H datantyp einer variable ermittel mit sql Datenbankprogrammierung 3
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
M Ausgabe der Rows mit höchstem Wert X einer Gruppe y,z ? Datenbankprogrammierung 2
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
turmaline [Hibernate] @OneToOne: Löschen einer referenzierten Instanz Datenbankprogrammierung 2
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
B Aktuellen Stand der Datensätze einer Datenbank anzeigen Datenbankprogrammierung 9
B Die Anzahl der Datensaetze einer Datenbank anzeigen Datenbankprogrammierung 2
T Ablage von Benutzereinstellungen in einer DB Datenbankprogrammierung 7
T Inhalt einer Datenbanktabelle autom. in XML ausgeben Datenbankprogrammierung 7
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
B MySQL Row und ColumnIndex aus einer JTable (mysqlDb) selectieren Datenbankprogrammierung 18
C Hibernate Liste mit allen Objekten einer Entity Datenbankprogrammierung 17
M Sinnvoller Entwurf einer Java DB-Anwendung Datenbankprogrammierung 2
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben