tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
3846
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    naeko naeko ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Beiträge
    54
    Hallo,

    ich habe eine Access-DB bzw. eine CSV-Datei mit vielen Daten (ca.5000).
    Jetzt möchte ich eine Oracle-DB mit diesen Daten füllen.
    Leider hab ich in meinem Oracle SQL Developer keine Funktion gefunden, wo ich die Daten einfach so kopieren kann. Ich will die aber auch nicht händisch eintippen. Gibt es da irgendeine Möglichkeit?

    Danke
     

  2. #2
    Avatar von Exceptionfault
    Exceptionfault Exceptionfault ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Neckarsulm
    Beiträge
    348
    Es gibt natürlich sehr viele Möglichkeiten. Sehr elegant und schnell sind External Tables, allerdings nicht ganz so trivial um es in 2 Sätzen zu erklären.

    Wenn du aber schon vom SQL Developer sprichst, in der neusten Version 1.1.0.21 gibt es eine Importfunktion.
    Rechte Maustaste auf die Tabelle in die du importieren willst => Import Data => Excel
    Deine CSV Datei musst du vorher in Excel öffnen und eben auch als .xls Datei speichern. Die Reihenfolge der Spalten musst du entsprechend anpassen falls die alte und neue Tabelle abweichen.

    Meld dich ob`s damit funktioniert hat, ansonsten probieren wirs mit External Tables bzw. dem SQL*Loader.

    p.s. 5000 Sätze sind nicht viel
     
    liebe Grüße
    Exceptionfault (http://exceptionfault.de)

    Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008

  3. #3
    naeko naeko ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Beiträge
    54
    wow.......das ging ja schnell. Danke für die Antwort, werde es demnächst dann ausprobieren:

    nun ja 5000 Datensätze in eine DB händisch einzugeben dauert trotzdem lang

    Vielleicht kannst du mir aber bei einem anderem Problem helfen:
    Ich greife aus einer Java-Applikation auf Oracle-DB und bekomme (nach einer gewissen Zeit) folgende Fehlermeldung:
    ORA-01000: Maximale Anzahl offener Cursor überschritten
    Im google steht ich soll in der Datei "init.ora" Konfiguration anpassen (max_open_cursors erhöhen).
    Leider greif ich auf die DB nicht lokal zu. Und selbst wenn ich diese Cursorzahl auf ein Maximum stellen werde, werd ich sie irgendwann mal erreichen.
    Was sind denn diese Cursors?Und wie kann ich sie aus meiner Anwendung heraus schließen?
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo!

    Ich greife aus einer Java-Applikation auf Oracle-DB und bekomme (nach einer gewissen Zeit) folgende Fehlermeldung:
    ORA-01000: Maximale Anzahl offener Cursor überschritten
    Dann würde ich mal sagen, dass in der Java Anwendung die verwendeten Cursor nicht geschlossen werden ... Wurde für die entsprechenden ((Prepared/Callable)Statement / ResultSet -Instanzen close() aufgerufen?

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    naeko naeko ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Beiträge
    54
    also es läuft bei mir folgendermaßen:
    es gibt eine Methode wo ich meine Info von ResultSets bekomme:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    ResultSet res;
    res = getDatenFromTableA();
    res.next();
    setFeldA(res.getString(1));
    res = null;
    res = getDatenFromTableB();
    res.next();
    setFeldB(res.getString(1));
    res = null;
    res = getDatenFromTableC();
    //und so weiter.....am Schluss dann:
    res.close();
    dann in einer anderen Klasse Methoden mit eigentlichen Abfragen :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    ResultSet getDatenFromTableA()
    {
     ResultSet res = null;
     String sql = "SELECT BLABLABLA FROM BLABLA";
     try
     {
      res = getResult(connection, sql);
     }
     catch(SQLException e)
     {
      e.printStackTrace();
     }
     return res;
    }
    und im getResult steht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    ResultSet getResult(Connection connection, String sql) throws SQLException
    {
     ResultSet res = null;
     
     if (connection != null)
     {
      Statement statement = connection.createStatement();
     
        if (statement.execute(sql))
        {
            res = statement.executeQuery(sql);
        }
     }
     else
        throw new SQLException("No Database connection available!");
            
    return res;
    }
    Wo muss ich noch die Cursors schließen, ohne dass ich was an meiner Codestruktur ändern muss?
     

  6. #6
    Avatar von Exceptionfault
    Exceptionfault Exceptionfault ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Neckarsulm
    Beiträge
    348
    Ich komm zwar mehr aus der .NET Welt, aber mir scheint du schliesst nirgends dein Resultset, sondern verwirfst einfach die Referenz darauf. res = null schliesst das Resultset nicht sofort, wahrscheinlich erst wenn der Garbage Collector die Resource wieder frei gibt zu der du nach dem NULL setzen keine Referenz mehr hast.
    Besser ist es vor dem NULL setzen, explizit res.close(); aufzurufen.

    ( das wäre zumindest bei .NET meine Vermutung )

    Zitat Zitat von naeko Beitrag anzeigen
    Code :
    1
    2
    3
    
    setFeldA(res.getString(1));
    res = null;
    res = getDatenFromTableB();
    [/CODE]
     
    liebe Grüße
    Exceptionfault (http://exceptionfault.de)

    Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008

Ähnliche Themen

  1. Blobs füllen und auslesen (Oracle DB / C++)
    Von LordTerra im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 17.11.09, 11:27
  2. Antworten: 0
    Letzter Beitrag: 16.02.09, 20:10
  3. JTable mit Daten füllen
    Von ratze79 im Forum Java
    Antworten: 2
    Letzter Beitrag: 04.06.07, 20:33
  4. Antworten: 2
    Letzter Beitrag: 09.07.06, 12:18
  5. Combobox mit daten aus db füllen
    Von Luda im Forum ASP
    Antworten: 6
    Letzter Beitrag: 14.09.03, 18:20