xuser -d database -U cle -u nom,password set
Pour lire les entrées de clés:
xuser list
Et pour une clé particulière:
xuser -U cle list
Pour détruire la/les clé(s), on emploiera clear à la place de list
Si on ne précise pas de clé lors de la mise en place une entrée est générée par défaut.
Dbmcli, xsql et sqlcli utilisent XUSER.
On peut entrer dans Xuser avec dbmcli, mais je vous renvoie au manuel.
On doit fournir l'identification du dbm, Database Administrator, avec -u nomDbm,dbmPasswd, sauf pour db_enum
On peut se connecter en plus sur une session particulière afin d'exécuter des commandes relatives à la session:
On peut fournir une commande via stdin avec -c.
On peut demander la lecture d'un fichier (pour exécution) avec l'option -i. Dans ce cas dbmcli demande une seule commande par ligne, les lignes se concaténant avec un / (voir un exemple sur un trigger 5.4). Les commentaires sous dbmcli commencent par #.
Donc par exemple:
En mode interactif:
dbmcli -d base -u dbm,dbmPasswd
Envoyer une commande:
dbmcli -u dbm,dbmpasswd db_state
Envoyer une commande SQL:
dbmcli -u dbm,dbmpasswd -uSQL jm,jmpass -c "sql_execute select * from COURRIEL"
Envoyer un fichier de commandes:
dbmcli -u dbm,dbmpasswd -i MAILS.ini
Toujours -d pour se connecter à une base.
On fournit un identifiant avec -u user,passwd.
La lecture d'un fichier se demande avec -b. Le fichier peut comporter des commentaires commençant par //. Les commandes différentes sont séparées par une ligne commentée au moins. Voir 6.2 pour un exemple.
Donc par exemple:
En mode interactif:
loadercli -d base -u user,userPasswd
Envoyer un fichier de commandes:
loadercli -u user,userPasswd -b listing.dbproc.loader
Par défaut, pour ce qui concerne l'instruction DATALOAD, loadercli utilise la virgule (,) comme séparateur de champs, et le guillemet double (") comme délimiteur de champ. Un saut de ligne sépare deux enregistrements. Voir les exemples comme mentionné plus haut.
Pas grand chose à dire à part que ça existe et que l'option -h est très claire. C'est plus propre que dbmcli pour les requêtes SQL. Le peu que j'en aie pu voir, ça n'affiche pas les résultats de procédures, même fonctionnement que dbmcli ou loadercli donc. Mais les dates ne sont pas affichées convenablement.
Xsql utilise XUSER, ça fait gagner quelques caractères à la ligne de commande...
xsql est déprécié sous MaxDB, et remplacé par sqlcli.
C'est le nouveau client sql en phase alpha de MaxDB, qui m'a l'air pas mal, mais je débute dans son utilisation.
On s'y connecte facilement avec une user-key générée pour Xuser:
sqlcli -U maCle
me connectera à la base associée à maCle
Il y a des instructions sympa qui font l'équivalent du show tables; (\dt), et du
desc TABLE; (\dc TABLE) de MySQL
Pour lancer le serveur web il faut modifier le /etc/ld.so.conf en y ajoutant /usr/local/sapdb/indep_prog/web/lib, et relancer ldconfig. Mais tout dépend de votre installation, bien sûr.
Puis aller dans le dossier:
/usr/local/sapdb/indep_prog/web/pgm
et:
./wahttp &
Puis dans le navigateur, on a le webdbm et websql sous:
http://127.0.0.1:9999/webdbm
http://127.0.0.1:9999/websql
Je ne me suis pas trop pris la tête avec ça, j'aime bien les clients en ligne de commande, mais il y a des trucs intéressants et c'est à découvrir.
Voilà un client écrit en python que j'aime beaucoup. Le seul reproche que je lui ferais est qu'il ne
donne pas la taille des requêtes SELECT.
On s'y connecte avec ireport.py -d nomBase -u user,passwd
ireport.py -h pour l'aide. On se rend compte qu'il n'y a pas de basculement possible du mode
autocommit on/off. Pour ce faire, modifier le fichier avec le bout de code suivant (il est possible
qu'à l'heure à laquelle vous lirez ces lignes les modifications aient été déjà faites, je suis sur
MaxDB 7.5.0.8) que vous extrairez du message du développeur qui suit.
When the default was changed to autocommit, I forgot to add an option to change the default.
Just replace the following two functions in ireport.py
def createSession (options):
if not options.userinfo:
fatalError ('user name must be specified (option -u)')
if not options.dbname:
fatalError ('dabase name must be specified (option -d)')
name, pwd = split (options.userinfo, ',')
try:
connectoptions = []
if not options.transactions:
connectoptions.append ('autocommit=on')
if options.oracle:
connectoptions.append ('sqlmode=oracle')
if options.odbc:
connectoptions.append ('component=ODB')
optstring = string.join (connectoptions, '&')
result = sapdb.connect (name, pwd, options.dbname, options.node, optstring)
except sapdb.SQLError, err:
if err.errorCode == -4008:
name = upper (name)
result = sapdb.connect (name, pwd, options.dbname, options.node, optstring)
return result
def _options ():
return [
# (optstring, varname, typechar, default, help)
('u', 'userinfo', ':', None, '<user>,<pwd>'),
('d', 'dbname', ':', None, 'database name'),
('n', 'node', ':', '', 'server name'),
('lines', None, ':', defaultLines (), 'lines per screen'),
('columns', None, ':', defaultCols (), 'columns per line'),
('editor', None, ':', defaultEditor (), 'editor to edit SQL'),
('pager', None, ':', None, 'program to scroll result sets'),
('batch', None, ':', None, 'to stdout [grid, compressed or printf format]'),
('version', None, '', _versionString, 'version information'),
('oracle', None, '', None, 'enable Oracle (tm) SQL syntax'),
('odbc', None, '', None, 'enable ODBC/JDBC SQL syntax'),
('transactions', None, '', None, 'use transactions instead of autocommit'),
('history', None, ':', '~/.ireport', 'name of history file'),
('tutorial', None, '', None, 'start tutorial'),
]
This also adds an option -odbc to help you test statements if you develop mainly with ODBC,
JDBC or one of the derived interfaces (DBD::ODBC, PHP, VB etc.)
It wouldn't be difficult to add a command as well, just use do_commit as a template and call
self.session.setAutocommit depending on the value of strarg. Adding a new do_* method is enough
to create a new command, you don't have to register it anywhere else.
Daniel Dittmar
--
Daniel Dittmar
SAP Labs Berlin
daniel.dittmar@sap.com
En y tapant ? (un point d'interrogation) on trouvera les commandes disponibles.
Il est possible d'obtenir une historisation des commandes avec un petit bidouillage, car MaxDB n'étant pas GPL, les binaires ne sont pas liés à la libreadline. Alors voilà comment j'ai fait (voir 9.1 pour les préliminaires liés à l'installation):
cd /usr/local/sapdb/interfaces/python cp ../../depend/lib/python1.5/optlib.py .
#!/usr/bin/env x_python par
/usr/bin/python2.2
# pour compatibilite ave le module cmd de python2.2 completekey = 'tab' cmdqueue = []
Enfin, son prompt est ==>, ça se change en éditant le fichier. Je dis ça car ce peut-être
quelque chose que vous rencontrerez plus loin dans la doc, ça vous donnera une idée du client
utilisé.
jean-michel OLTRA 2004-07-06