[Regex] Récupérer une chaine de caractère

Résolu
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009 - 4 mars 2009 à 10:54
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009 - 11 mars 2009 à 11:39
Bonjour tout le monde,

Je viens de découvrir les expressions régulières et j'aurais besoin d'aide

J'ai un fichier (fichier.sql) qui contient un très grand nombre de CREATE TABLE.

Afin de créer l'auto incrément pour les tables qui en ont besoin, je dois créer à la fin de ce fichier les séquences et triggers des tables correspondantes. (seulement les tables qui contiennent IDENTITY dans leur création)

Pour cela, je dois récupérer le nom de la table ainsi que le champ unique.

CREATE TABLE T1_E (
  ID_E INTEGER  NOT NULL   IDENTITY ,
  NOM_E VARCHAR(32)  NOT NULL  ,
  T1_E_LIB INTEGER      ,
PRIMARY KEY(ID_E));

Je bloque pour la récupération de ces deux champs ...

Je vous remercie par avance.

5 réponses

titom59 Messages postés 19 Date d'inscription lundi 26 janvier 2004 Statut Membre Dernière intervention 4 mars 2009
4 mars 2009 à 15:17
à mon avis tu dois procéder en plusieurs étapes.

lire ton fichier ligne à ligne en isolant tous les bloc Create Table  :

CREATE TABLE T1_E (
  ID_E INTEGER  NOT NULL   IDENTITY ,
  NOM_E VARCHAR(32)  NOT NULL  ,
  T1_E_LIB INTEGER      ,
PRIMARY KEY(ID_E));

puis traiter chacun avec ta fonction

Titom59 !
3
titom59 Messages postés 19 Date d'inscription lundi 26 janvier 2004 Statut Membre Dernière intervention 4 mars 2009
4 mars 2009 à 12:55
Salut,

L'extraction de données d'une chaine de caractères est possible via l'utilisation de groupe :

la syntax d'un groupe est :  (?<NOMDUGROUPE>CaracteresDuGroupeAExtraire)

par exemple :

 Regex regProcedureType = new Regex(@"^(?[a-zA-Z-]+)_");
 Match matchProcedureType = regProcedureType.Match(fileName);

string s = matchProcedureType.Groups["PROCEDURE"].Value;

PROCEDURE ici est un sous ensemble a extraire : du début de la chaine (fileName) jusqu'au premier underscore

en lisant ton fichier ligne à ligne tu peux donc contrôler la présence de CREATE TABLE
puis en extraire la chaine qui suit avant (

de même pour IDENTITY

en espérant que ça puisse t'aider.

Titom59 !
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
4 mars 2009 à 14:50
Merci bien pour cette réponse.

J'arrive a créer les triggers et les séquences automatiquement, c'est parfait !

Par contre actuellement je créer la séquence et le trigger uniquement pour le premier CREATE TABLE de mon fichier.

Comment je pourrais procéder pour créer les triggers et sequences pour tous les CREATE TABLE contenant IDENTITY dans la création ?
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
4 mars 2009 à 15:55
Pour isoler le bolc create table, je pourrais faire ça avec un regex en utilisant la méthode des groupes comme présenté ci-dessus non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
11 mars 2009 à 11:39
J'ai utilisé les expressions régulières pour récupérer ce que je voulais. Merci
0
Rejoignez-nous