ORACLE le paramètre CURRENT_SCHEMA

Un paramètre utile pour changer le schéma courant dans oracle est d'utiliser la commande suivante :
-->
alter session set current_schema=nom_schema

Cela permet de "switcher" d'un schema à un autre;l'exemple suivant montre comment :

C'est la même chose qui se passe quand vous ajoutez la clause fromuser touser lors d'un import, l'ajout du paramètre SHOW=Y permet de le vérifier :

l'utilisation de cette commande a quelques restrictions d'usage par exemple; dans l'instruction rename qui ne supporte pas le nom de schéma dans sa syntaxe vous ne pouvez pas contourner cette limitation en utilisant le paramètre CURRENT_SCHEMA un exemple :

oracle@ESS3:~> sqlplus "/as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Dec 14 09:47:27 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connecte a :
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user
USER est "SYS"
SQL> select table_name from dba_tables where owner='TEST';

TABLE_NAME
------------------------------
TEST_TABLE

SQL> alter session set current_schema=test;

Session modifiee.

SQL> rename TEST_TABLE to matable;
rename TEST_TABLE to matable
*
ERREUR a la ligne 1 :
ORA-03001: cette option n'est pas prise en charge

-->

--> -->

ORACLE SQL*Loader chargement de donneés partie 2

-->

le fichier de control pour SQL*loader est le suivant :
LOAD | CONTINUE_LOAD [DATA]
[CHARACTERSET charset] [specification d'ordre]
[INFILE clause [INFILE clause...]]
[MAXRECORDSIZE octets
[READBUFFERS entier]
[INSERT | APPEND | REPLACE | TRUNCATE]
Règles de concatenation ]]
INTO TABLE clause [INTO TABLE clause...]

LOAD : est la principale clause dans un fichier de contrôle ; elle définit la façon dont sql*loader interprète les données ou les trouver ou les insérer, une autre sœur moins connue de LOAD est CONTINUE_LOAD utilisée pour reprendre un chargement interrompu.

CHARACTERSET utilisé pour spécifier le charset utilisé dans le fichier de données.

INFILE spécifie le chemin ou se trouve le fichier données, le format détaillé est le suivant :
{INFILE {filename|*} [os_specific_options]
[ BADFILE badfile_name]
[DISCARDFILE discardfile_name]
[{DISCARDS | DISCARDMAX} discardmax]

  1. Filename est le nom complet du fichier de données, si on utilise * alors les données sont inclus dans le fichier de control
  2. Badfile facultatif le fichier ou seront rejeter les enregistrements si il y a erreur; on peut aussi utiliser le paramètre BAD avec la commande sqlldr….bad=erreur.bad…
  3. Discardfile facultatif aussi, on peut utiliser son équivalent le paramètre DISCARD dans la ligne de commande, il spécifie le fichier ou seront rejetés les enregistrements qui ne satisfont pas une condition WHEN dans un chargement conditionnel.
  4. Discards ou Discardmax est le nombre maximum d’enregistrements rejetés par la clause WHEN avant d’interrompre le chargement par défaut pas de limite.
Pour moi le plus important c’est le OS_SPECIFIC_OPTIONS qui informe sql*loader comment interpréter le type de lignes, sql*loader supporte trois format de lignes :

"" Pour les lignes en format Stream; la ligne est terminer par un retour à la ligne, noter qu’on peut spécifier un autre terminateur des lignes en utilisant "STR ‘|’ " ou | est le caractère de fin de ligne.


-->
Exemple :
Jean,malibou,21
Said,asso,30
Jack,shepard,22


"FIX longueur" pour les lignes en longueur fixe par exemple "Fix 15" pour une ligne de longueur 15.
Exemple de données :
La nouvelle,1234
L’ancienne,1456

"VAR longueur_champ " pour les lignes en format variables et pour les quels le terminateur de ligne change vous devez spécifier un champ de longueur au début de chaque ligne
Exemple de données :
011hello,james
009jean,good
013Blabla,blalba

Connaitre le format de ligne approprié est primordial pour faire un chargement réussi, imaginer un fichier de 3Go avec des longueurs de lignes variables et des retours à la ligne dans les champs et des séparateurs de champs différents , et que vous ne pourrez pas régénérer le fichier avec un format approprié !!
On continuera avec les autres clauses dans les prochaines posts.