dbzugriff aus ksh skript

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von belubaba, 23.09.2005.

  1. #1 belubaba, 23.09.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    Ich möchte aus einem ksh skript heraus zwei werte aus einer tabelle in eine variable lesen ohne diese vorher in eine temporäre Datei zu schreiben.

    hat dazu jemand eine Idee?

    Folgendes habe ich in meinem skript:

    Code:
    sqlplus sqluser/sqlpassword@datenbank << EOF 2>&1 >> sql.log
    select user, password from meine_tabelle where name='Horst Mueller';
    commit;
    exit
    EOF
    Problem 1: wie bekomme ich das Ergebnis in eine Variable ohne vorher eine Ausgabeumlenkung in eine Datei gemacht zu haben?

    Problem 2: Wie vermeide ich das ein Ergebnis in dieser Form ausgegeben wird

    SQL>
    USER PASSWORD
    ------------------------------ --------------------
    horst geheim

    SQL>

    schliesslich will ich nur die Werte horst und geheim in meinen Variablen ...

    bb
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 neutrino1, 29.09.2005
    neutrino1

    neutrino1 Mitglied

    Dabei seit:
    03.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hi!

    Uns so sollte es gehen:

    Code:
    set -A ARRAYNAME $(echo "
    whenever sqlerror exit 1
    Set pagesize 0
    Set Feedback off
    select user, password from meine_tabelle where name='Horst Mueller';
    quit"|sqlplus -s sqluser/sqlpassword@datenbank)
    In ${ARRAYNAME[0]} steht "horst", in ${ARRAYNAME[1]} steht "geheim".

    Ciao
     
  4. #3 Cyber, 30.09.2005
    Zuletzt bearbeitet: 30.09.2005
    Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Ich hab mir mal nen sql-select auf ne oracle-db als funktion gebastelt, vielleicht hilfts dir weiter :)

    Code:
    sql_select ()
    {
       # NAME:     sql_select
       # DESC:     Executes an SQL-SELECT and stores the values in the given Array
       # PARAM:    $1 as Name of Array, $2 as num of cols , $3 sql-statement (without SELECT)
       # RETVAL:   Num of rows selected
       # COMMENT:  i.e. VARPREF="myvar" then: myvar_0[0], myvar_0[1], myvar_1[0], ... (myvar_ROW[COL])
    
       VARPREF=$1
       COLS=$2
       COMMAND=$3
       ROWS=0
         
       # Read values from database   
       unset READVAR
       READVAR=`sqlplus [B]DB_USER/DB_PWD[/B] <<_EOJ6 | sed -e '/Plus/,/SQL/d' -e '/<@>/,/PL\/SQL/d'| grep -v "SQL" | grep -vi "zeilen"
    
          set linesize 9999;
          set pagesize 500;
          set heading off;
          set tab off;
          set colsep '~';
          
          SELECT $COMMAND
          EXIT;
    _EOJ6`
          
       col=0
       row=0
       pos=1
       
       echo "$READVAR" | sed -e 's/ \{4,\}//g' -e '/#.*/d' -e '/^$/d' -e '/^[     ]*$/d'| while read line
       do
          pos=1
          col=0
          while [ $pos -le $COLS ]
          do
             VARNAME=$VARPREF"_"$row[$col]
             VALUE=`echo "$line" | cut -f$pos -d~`
             
             eval $VARNAME="\"$VALUE\""
             col=`expr $col + 1`
             pos=`expr $pos + 1`
          done
          row=`expr $row + 1`
          ROWS=`expr $ROWS + 1`
       done
       
      return $ROWS;  
    }
    
    Aufruf innerhalb des scripts mit z.B.:
    Code:
    sql_select "OTTO" "1" "parent_id from $table where id=12345;";
    
    sql_select "HANS" "2" "b.addr, b.inf FROM $table b WHERE b.id=12345 AND b.parent_id=0;"
    
     
  5. niLs

    niLs òle òle

    Dabei seit:
    10.06.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Ort:
    Hannover
    wieso nimmst du nicht php?
     
  6. oenone

    oenone Freier Programmierer[Mod]

    Dabei seit:
    22.08.2002
    Beiträge:
    599
    Zustimmungen:
    0
    Ort:
    Mannheim
    oder besser: perl xD

    auf bald
    oenone
     
  7. #6 belubaba, 04.10.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    Vielen Dank für die Beispiele.

    Die sind etwas eleganter als die Lösung die ich schlussendlich gefunden habe.

    php und perl kann ich aus verfahrenstechnischen Gründen nicht nutzen ...

    bb
     
  8. #7 belubaba, 07.10.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    Hi Cyber,

    das mein Skript etwas umfangreicher geworden ist und ich einige SQL Aufrufe darin habe, wollt ich diesen Vorschlag übernehmen.

    Funktioniert auch auf der Kommandozeile.
    Aber sobald ich das in ein Skript packe bekomme ich folgende Meldung:

    ./sqltest.sh[23]: syntax error at line 23 : `<<' unmatched

    Das ist dieser Teil hier

    Code:
       READVAR=`sqlplus DB_USER/DB_PWD [B] <<_EOJ6[/B]  | sed -e '/Plus/,/SQL/d' -e '/<@>/,/PL\/SQL/d'| grep -v "SQL" | grep -vi "zeilen"
    
          set linesize 9999;
          set pagesize 500;
          set heading off;
          set tab off;
          set colsep '~';
          
          SELECT $COMMAND
          EXIT;
    _EOJ6`
    
    Nach dem ich dutzende sinnige und unsinnige Dinge ausprobiert habe um das zu fixen fällt mir wirklich nichts mehr ein woran das liegen kann.

    Laut manpage muss ich nur führende Whitspaces vermeiden. Ich habe ähnliche Funktionen auch schon in anderen Skripten und die funktionieren tadellos.

    Kann das daran liegen das ich beim kopieren des Codes irgendein nicht sichtbares Steuerzeichen mit in das Skript kopiert habe?

    bb
     
  9. #8 belubaba, 07.10.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    ... was mich darauf gebracht hat diesen Teil des Skriptes einfach mal abzutippen ....

    Muss tatsächlich ein Steuerzeichen gewesen sein.
    Jetzt funktionierts :)

    bb
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Alla hopp, dann viel Spaß noch :)
     
  12. #10 flugopa, 26.05.2009
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Hallo Cyber,

    Dein Beispiel ist interessant und kommt in abgewandelter Form sicherlich später zum Einsatz.
     
Thema:

dbzugriff aus ksh skript

Die Seite wird geladen...

dbzugriff aus ksh skript - Ähnliche Themen

  1. Kontextmenü mit einem Skript verbinden

    Kontextmenü mit einem Skript verbinden: Abend, wenn ich z. B. eine simple Umwandlung eines Bildformates in ein anderes über das KDE-Kontextmenü (Servicemenü nennt es sich im KDE oder...
  2. [Erledigt] Shell-Skript lässt sich nicht mit Cron ausführen

    [Erledigt] Shell-Skript lässt sich nicht mit Cron ausführen: Hallo, ich hoffe ihr könnt mir helfen. Ich entwerfe im Moment ein Skript, welches den Callmonitor (Telnet) auf meiner FritzBox abfragt und wenn...
  3. Kunden-Skript ausgelöst durch Linux-Cluster Pacemaker

    Kunden-Skript ausgelöst durch Linux-Cluster Pacemaker: Hallo! Ich komme aus der AIX-Welt wo es im HACMP-Cluster die Möglichkeit der Ausführung eines Start- bzw. Stop-Skriptes im Zuge einer...
  4. Shell-Skript Datum in einer Datai suchen

    Shell-Skript Datum in einer Datai suchen: Hallo zusammen Ich komm eigentlich aus der Klicki-Bunti-Welt von Windows. Seit geraumer Zeit versuche ich meine Künste mit verschiedenen...
  5. Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken

    Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken: Der Nmap-Entwickler Gordon »Fyodor« Lyon hat bekannt gegeben, dass eine neue Version des populären, freien Netzwerkscanners veröffentlicht wurde....