Announcement

Collapse
No announcement yet.

Daten ausführen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten ausführen

    Hi,

    ich habe in einer Textdatei alle Daten zusammen u.a. "Create Tabel" und die Daten, die als "Insert into" in der Datei stehen. Meine Frage ist: ist das möglich diese Datei unter Oracle so zu loaden, dass alle sich in der Textdatei befinlichen Daten (Anweisungen) sozusagen ausgeführt werden?

    Danke im Voraus.
    Zuletzt editiert von Smart; 06.06.2011, 20:55.

  • #2
    Ja. Z.B. mittels sqlplus:
    Code:
    sqlplus user/passwort@dein_tnsname @dein_skript
    Alternativ kannst Du es natürlich auch über einen anderen Client öffnen und ausführen wie etwa den SQL Developer oder Toad.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Hi,

      danke für deine Antwort. Die Anweisung ist mir nicht bekannt. Kannst du mir bitte diese Anweisung anhand eines Beispiels kurz erläutern, oder mir sagen, wo ich etwas darüber finden kann?


      Gruß

      Comment


      • #4
        Ein "smarter" Weg wäre, mal zu googlen z.B. "oracle sqlplus"
        Top Hit: SQL*PLUS

        Viel Erfolg
        JUM

        Comment


        • #5
          Hi,

          danke für den Rat. Gesucht habe ich. Ich habe da aber ein merkwürdiges Problem, was ich mir nicht erklären kann. Daher glaubte ich, dass ich nicht alles richtig machen würde. Ich habe nämlich in der Tabelle eine Spalte, die als decimal(6,2) definiert wurde. Bei einer Insert-Anweisung z.B. der Form:

          INSERT INTO testTable(..., '5.23');

          bekomme ich von sqlplus: Ungültige Zahl.

          Ohne Anführungszeichen meldet SQLPLUS eine Verbindung zu Oracle und mit einer Zahl 2 am Ende bleibt stehen.

          Gruß

          Comment


          • #6
            Originally posted by Smart View Post
            Hi,

            danke für den Rat. Gesucht habe ich. Ich habe da aber ein merkwürdiges Problem, was ich mir nicht erklären kann. Daher glaubte ich, dass ich nicht alles richtig machen würde. Ich habe nämlich in der Tabelle eine Spalte, die als decimal(6,2) definiert wurde. Bei einer Insert-Anweisung z.B. der Form:

            INSERT INTO testTable(..., '5.23');

            bekomme ich von sqlplus: Ungültige Zahl.

            Ohne Anführungszeichen meldet SQLPLUS eine Verbindung zu Oracle und mit einer Zahl 2 am Ende bleibt stehen.

            Gruß
            Hallo,

            insert into <tabelle> (<spalte_1>,..,<spalte_n>)
            values (<wert_1>,..,<wert_n>);

            Gruß

            Martin

            Comment


            • #7
              Hallo Martin,

              danke, aber daran liegt es nicht. Wenn man alle Spalten und in die richtige Reihenfolge angibt, kann man den ersten Teil mit Spalten auslassen.

              Gruß

              Comment


              • #8
                Hallo,

                das war auch eher auf das values gemünzt.
                SQL+ sollte dir auch die Zeilennr anzeigen, in der der Fehler ist.
                Vermute, dass dort ein Wert fehlt und sql dann ein char in deine nimber einfügen will.

                Gruß

                Martin

                p.s
                Ansonsten den developer oder sonst ein tool nutzen, ist evtl dann etwas übersichtlicher(öffnen und dann als Script laufen lassen)

                Comment


                • #9
                  Date in Oracle

                  Hallo Martin,

                  danke nochmals. Weißt eventuell, wie ich ein Datum als 'yyyy-mm-dd'-Format in Oracle speichern kann. Ich habe nämlich ein Haufen Daten der Form z.B. '2000-01-01', die ich als Date abspeichern muss. Das klappt aber nicht, was ich auch mache. Die Fehlermeldung:

                  ORA-01861: Literal stimmt nicht mit Formatzeichenfolge überein

                  Danke im Voraus

                  Comment


                  • #10
                    Hallo Smart,

                    hier mal ein Testbeispiel zum Speichern von Datumswerten.
                    Es ist anzuraten diese als "echtes" Datum zu speichern, falls man sie gescheit sortieren will oder damit rechnen:
                    Code:
                    CREATE TABLE MyTab
                     (nnam VARCHAR2(30),
                      gdat DATE,
                      gstr VARCHAR2(10));
                    
                    INSERT INTO MyTab 
                      VALUES ('Alt', to_date('31.01.2001','DD.MM.YYYY'), '31.01.2001'); 
                    
                    INSERT INTO MyTab
                      VALUES ('Neu', to_date('08.06.2011','DD.MM.YYYY'), '08.06.2011');
                    
                    SELECT * FROM MyTab;
                    
                    NNAM           GDAT         GSTR      
                    --------------------------------
                    Alt       31.01.2001  31.01.2001
                    Neu       08.06.2011  08.06.2011
                    
                    
                    --geht, da implizite Konvertierung von String in Datum
                    SELECT * FROM MyTab
                     WHERE gdat>'09.01.2011';
                    
                    NNAM           GDAT         GSTR      
                    --------------------------------
                    Neu       08.06.2011  08.06.2011
                    
                    --explizite Konvertierung - Empfohlen
                    SELECT * FROM MyTab
                     WHERE gdat>to_date('09.01.2011','DD.MM.YYYY');
                    
                    NNAM           GDAT         GSTR      
                    --------------------------------
                    Neu       08.06.2011  08.06.2011
                    
                    --gibt falschen Datensatz aus, da bei Stringvergleich '08..'<'09...'
                    SELECT * FROM MyTab
                     WHERE gstr>'09.01.2011';
                     
                    NNAM           GDAT         GSTR      
                    --------------------------------
                    Alt       31.01.2001  31.01.2001
                    
                    --ORACLE speichert bei DATE immer auch Uhrzeit
                    SELECT nnam, gdat, to_char(gdat,'HH24:MI:SS')
                      FROM MyTab;
                    
                    NNAM           GDAT       ZEIT      
                    ------------------------------
                    Alt       31.01.2001  00:00:00
                    Neu       08.06.2011  00:00:00

                    Comment


                    • #11
                      Hallo Jum,

                      vielen Dank für deine Bemühung und dein Beispiel. Dein Beispiel hat mir sehr geholfen.


                      Gruß
                      Zuletzt editiert von Smart; 08.06.2011, 20:30.

                      Comment

                      Working...
                      X