jeudi 13 août 2015

Oracle : Rechercher un nom de colonne dans toutes les tables d'une base Oracle

Oracle permet de faire des requêtes dans le dictionnaire de la base de donnée.

Pour lister toutes les colonnes des tables :
SELECT column_name,table_name FROM user_tab_columns;

Pour rechercher les colonnes contenant la chaîne de caractère "CODE" :
SELECT column_name,table_name FROM user_tab_columns WHERE column_name like '%CODE%';

vendredi 18 octobre 2013

Oracle : Comment connaître les index utilisés par une requête

Pour connaître les index utilisés par une requête, il faut utiliser  l'instruction EXPLAIN PLAN.

EXPLAIN PLAN FOR (SELECT * FROM ma_table  WHERE ma_colonne='iuhuhj');
SELECT PLAN_TABLE_OUTPUT FROM TABLE(dbms_xplan.display());

Ce qui donne le tableau suivant, avec le coût (dernière colonne) de chaque étape :
-------------------------------------------------------------------------------------
| Id  | Operation                   | Name                  | Rows  | Bytes | Cost  |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                       |     1 |   782 |     3 |
|   1 |  TABLE ACCESS BY INDEX ROWID| MA_TABLE              |     1 |   782 |     3 |
|   2 |   INDEX RANGE SCAN          | PK_ID_TABLE           |     1 |       |     2 |

-------------------------------------------------------------------------------------

jeudi 17 octobre 2013

Oracle : Comment rechercher les doublons dans une table

Pour rechercher les doublons dans une table, il faut faire une requête imbriquée en  utilisant  l'instruction ROWID.

SELECT FROM ma_table a WHERE a.ma_colonne IN (SELECT b.ma_colonne FROM ma_table b WHERE  a.ROWID <> b.ROWID);

Oracle : Comment supprimer tous les enregistrements d'une table

Pour supprimer tous les enregistrements d'une table, il faut utiliser l'instruction TRUNCATE.

Pour vide une table Oracle :

TRUNCATE TABLE ma_table;

Oracle : Comment paginer ou limiter le nombre d'enregistrement d'une requête

Pour paginer ou limiter le nombre d'enregistrement retournés par une requête, il faut utiliser l'instruction ROWNUM.

SELECT FROM
    (SELECT ROWNUM as num_colonnema_colonne FROM ma_table)
WHERE num_colonne BETWEEN debut AND fin;

Exemple :
Pour paginer, de 10 en 10 les requêtes sont :
SELECT * FROM
    (SELECT ROWNUM as num_colonne, ma_colonne FROM ma_table)
WHERE num_colonne BETWEEN 1 AND 10;

SELECT * FROM
    (SELECT ROWNUM as num_colonne, ma_colonne FROM ma_table)
WHERE num_colonne BETWEEN 11 AND 20;

.....


jeudi 10 octobre 2013

Dos : Comment couper une colonne de n caractères d'un fichier texte

Pour couper une colonne de n caractères d'un fichier il faut utiliser la commande Dos cut.

Voir le post lancer la fenêtre dos pour obtenir l'écran ligne de commande Dos.

La commande ci-dessous selectionne la colonne des caractères 2 à 5 du fichire fichier1.txt et les place dans le fichier fichier_coupe.txt.
cut -c 2-5 fichier1.txt > fichier_coupe.txt

Dos : Comment supprimer les doublons d'un fichier

Pour supprimer les doublons d'un fichier il faut utiliser les commandes Dos sort et uniq.

Voir le post lancer la fenêtre dos pour obtenir l'écran ligne de commande Dos.

La commande uniq enlève les doublons des lignes successives, il faut donc trier le fichier avant d'utiliser cette commande.

Pour trier le fichier fichier1.txt et créé le fichier trié fichier_trie.txt :
sort fichier1.txt > fichier_trie.txt

Pour enlever les lignes en doublons et créer le nouveau fichier fichier_sans_doublon.txt :
uniq fichier_trie.txt fichier_sans_boublon.txt