selectionner la donnee d'une colonne d'un tuple dynamiquement

selectionner la donnee d'une colonne d'un tuple dynamiquement - SQL/NoSQL - Programmation

Marsh Posté le 10-08-2004 à 17:45:25    

Bonjour,
 
Je programme avec PL/SQL et j'aimerais recuperer toutes les donnees d'une table SQL et les ecrire dans un fichier texte. Les donnees qui sont des varchar doivent etre entre apostrophes : 'je suis un varchar' . Les donnees numeriques n'ont pas d'apostrophe.
 
Ce fichier texte sert ulterieurement a reinserer les donnees dans une table SQL (me demandez pas pourquoi ou a quoi sert tout ca, je ne fais qu'executer des ordres). C'est pour ca que les donnees varchar doivent etre entre apostrophes pour l'INSERT INTO et pas les donnees numeriques.
 
Le code qui suit est du code PL/SQL melange avec du C.
 

Code :
  1. DECLARE
  2.   file UTL_FILE.FILE_TYPE;
  3.   CURSOR pointeur IS
  4.     SELECT *
  5.     FROM matable;
  6.   row_swap pointeur%ROWTYPE;
  7.   str_swap STRING;
  8. BEGIN
  9.   file := UTL_FILE.FOPEN('/tmp', 'myfile', 'w');
  10.   OPEN pointeur;
  11.   LOOP
  12.     FETCH pointeur INTO row_swap;
  13.     EXIT WHEN pointeur%NOTFOUND;
  14.     str_swap := "";
  15.     for (i=0 ; i<length(row_swap) ; i++) {
  16.       if (isNumber(row_swap[i])) {
  17.         str_swap := str_swap || row_swap[i];
  18.       } else {
  19.         str_swap := str_swap || '''' || row_swap[i] || '''';
  20.       }
  21.     }
  22.     UTL_FILE.PUT_LINE(file, str_swap);
  23.   END LOOP;
  24.   CLOSE pointeur;
  25.   UTL_FILE.FCLOSE(file);
  26. EXCEPTION
  27.   WHEN utl_file.invalid_path THEN
  28.      raise_application_error(-20000, 'ERROR: Invalid path for file or path not in INIT.ORA.');
  29. END;


 
A peu de chose pres (mise en page des donnees dans le fichier texte), c'est ce que je souhaiterais faire.
 
Ma question : Comment faire pour selectionner la donnee d'une colonne d'un tuple dynamiquement (ce que j'ai grossierement appele row_swap[ i ], avec 'i' designant la colonne) ? Et comment faire une comparaison de type (isNumber() par exemple) ?
 
S'il y a un moyen d'exporter toute une table SQL en fichier texte directement, je suis aussi preneur :)
 
piloupy
 
PS : je sais qu'on peut faire row_swap.nomColonne1 pour recuperer la valeur de la colonne d'un tuple, mais je ne peux pas l'utiliser de facon dynamique, a moins de faire du code auto-genere, mais bonjour la galere :)


Message édité par piloupy le 10-08-2004 à 17:51:11
Reply

Marsh Posté le 10-08-2004 à 17:45:25   

Reply

Marsh Posté le 10-08-2004 à 19:10:08    

[:mlc] on ne vous a jamais appris ce qu'était un dump? [:wam]


Message édité par gizmo le 10-08-2004 à 19:10:24
Reply

Marsh Posté le 11-08-2004 à 09:44:28    

euh ... non desole, je ne sais pas ce que c'est qu'un dump ...
 
je sais que la longueur du post peut en repousser plus d'un, mais si je disais : comment on fait pour parcourir des colonnes d'un tuple ? j'aurais des reponses qui ne me conviendraient surement pas ...
 
je suis desole de vous poser des questions qui peuvent vous paraitre evident, vous qui etes dans les bases de donnees depuis longtemps, mais on m'a demande d'assister quelqu'un sur un domaine que je ne maitrise pas ... ^^; et je n'ai pas le temps d'apprendre PL/SQL en entier et tout ce qui concerne les bases de donnees, j'ai aussi mon propre boulot ...
 
c'est pourquoi je vous demande de l'aide ...
 
piloupy


Message édité par piloupy le 11-08-2004 à 09:46:00
Reply

Marsh Posté le 11-08-2004 à 10:30:46    

Pas besoin d'apprendre le PL/SQL. Le dump c'est justement ce qui sert à exporter/importer des tables/DB d'un SGDB à un autre.
 
Renseigne-toi sur les outils qui sont à ta disposition pour faire cela le plus simplement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed