Se connecter avec
S'enregistrer | Connectez-vous

mis à jour d'une DB Oracle grace à des scripts shell

Dernière réponse : dans Programmation

Bonjour,

J'ai réalisé un menu en shell (korn shell) qui permet de gérer des stocks de produits. Il se présente à l'utilisateur de la manière suivante :

MENU

1. Mettre un produit en stock (le ranger dans une caisse)
2. Mettre un produit en rayon (le sortir d'une caisse)
3. Supprimer un produit des rayons
4. Connaitre le statut d'un produit


L'utilisateur choisit donc l'action qu'il souhaite. Les produits en stock sont rangés dans des caisses qui sont numérotées. Les produits et les caisses sont tous référencés dans une base de données Oracle qui contient 2 tables : PRODUIT et CAISSE.

La DB a été crée, j'y accède par l'intermédiaire de PL/SQL et peut faire mes requêtes correspondant aux actions du menu.
Mon problème est que j'ignore comment je pourrais intégrer mes requêtes dans mes scripts shell, pour que les mises à jour soient effectuées sur la DB.

Une aide me serait extrèmement précieuse, merci !!

Autres pages sur : mis jour oracle scripts shell

Lassé par la pub ? Créez un compte

je ne pense pas que ce soit possible en shell, ca n'a pas ete concu pour interférer avec une base de donnée...

a moins que tu puisse lancer un programme avec une ligne de commande et les parametres qui vont bien...

si si c'est possible

dans ton script shell tu peut appeler sqlplus

par exemple


#!/bin/ksh

sqlplus user/password @startfile.sql > log/startfile.log



ici startfile.sql est le fichier ou tu a mis ta requete sql

par exemple


set serveroutput off;

prompt ****************************************************
prompt Un message :
prompt ****************************************************

select code_site CODE_GP
from ...
where code_site not like '%E'
and code_site not like '%W'
minus
select substr( code, 2, 5 )
from site...;



tu peut aussi executer des procédure stockée (c'est plus propre...)

pool off;

exec schemaName.pk_name.procedure_name;

J'oubliai le sql loader d'oracle qui est puissant: Tu te debrouille pour avoir tes données dans un fichier, et tu charge le fichier a l'aide de sqloader


#!/bin/ksh
sqlldr user/password control=startfile.ctl log=log/startfile_LDR.log


ou ici startfile.ctl est du style


LOAD DATA
INFILE 'data/produit.csv' BADFILE 'log/produit.bad'

REPLACE
INTO TABLE PRODUIT
FIELDS TERMINATED BY ";"
TRAILING NULLCOLS
(
type,
num,
reg,
...
on_line date "DDMMYYYY"
)


faut adapter hein (le fichier chargé ici est produit.csv, les champs sont sépararé par un ";")
Lassé par la pub ? Créez un compte