IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Diviser des chaines extraites en plusieurs pour insertion


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut Diviser des chaines extraites en plusieurs pour insertion
    Bonjour à tous !

    Je suis confronté à une problématique que je ne peux résoudre.
    Je vous explique la situation :

    Je suis actuellement en train de travailler sur du reporting de données, qui sont extraites dans des fichiers journaux. J'utilise un petit outil sympathique qu'est LogParser ( fait par windows ).

    J'arrive à extraire des données à l'aide d'une requête "SQL like" et insérer ces données dans une base de données sous SQL SERVER 2008 R2.

    Voici une des requêtes LogParser qui me ramène la liste des comptes créés dans l'Active Directory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select RecordNumber, EventId, EventType, TimeGenerated, ComputerName, Message into AD_UserCreated from Security where EventId = 4720
    J'arrive à extraire mes données, à les insérer dans ma base SQL, mais je rencontre un petit problème. Le champ "Message" dans les fichiers journaux contient un tas d'informations à la suite. Voici un exemple de ce qu'il peut contenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Un compte d'utilisateur a été créé. Nom du compte : Administrateur Domaine du compte : DomaineTest Id d'ouverture de session : 0x479f4 ........... etc"
    J'insère le champs Message dans un seul champs pour l'instant, mais ce qui m’intéresse, c'est de prendre uniquement ce que j'ai besoin. C'est à dire le nom du compte ( Administrateur ), le domaine du compte ( DomaineTest ), et ce, chacun dans un champs !

    Je ne vois pas trop comment réaliser ceci. Avez vous des informations là dessus ? Avez-vous rencontré des situations similaires ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Tu peux utiliser une fonction Split :
    --> soit en CLRs
    --> soit en T-SQL

    Voici un exemple de fonction Split en T-SQL


    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Merci pour les informations !

    Mais le soucis c'est qu'il y a des espaces à gérer. Il n'y a pas réellement de caractère séparateur ici . Mis à part les ":". Je ne vois pas comment gérer les espaces, par exemple dans "Domaine du compte".

  4. #4
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Avec la fonction F_SQLSplit on a ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DECLARE @c VARCHAR(max)
    SET @c = 'Un compte d''utilisateur a été créé. Nom du compte : Administrateur Domaine du compte : DomaineTest Id d''ouverture de session : 0x479f4 ........... etc'
    SELECT * FROM dbo.F_SQLSplit(@c,':')

    => Résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IdSplit     ChaineSplit
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1           Un compte d'utilisateur a été créé. Nom du compte 
    2            Administrateur Domaine du compte 
    3            DomaineTest Id d'ouverture de session 
    4            0x479f4 ........... etc
    à toi de jouer maintenant
    Etienne ZINZINDOHOUE
    Billets-Articles

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    J'ai du mal à visualiser la chose.
    Je prends mes données d'une table :

    RecordNumber | Message
    Je veux spliter le champs message et je dois insérer dans une nouvelle table, et pour que chaque message soit associé à un RecordNumber pour faciliter l'insertion dans une table comme celle-ci :

    RecordNumber | EventID | EventType | TimeGenerated | NomDuCompte | Domaine | ...
    Suis-je sur la bonne voie ?

  6. #6
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DECLARE @c VARCHAR(max)
    SET @c = 'Un compte d''utilisateur a été créé. Nom du compte : Administrateur Domaine du compte : DomaineTest Id d''ouverture de session : 0x479f4 ........... etc'
    SELECT LEFT(ChaineSplit,PATINDEX('% Domaine%',ChaineSplit)) AS [NomDuCompte] FROM dbo.F_SQLSplit(@c,':') WHERE IdSplit = 2  
    SELECT LEFT(ChaineSplit,PATINDEX('% Id%',ChaineSplit)) AS [Domaine] FROM dbo.F_SQLSplit(@c,':') WHERE IdSplit = 3
    => Resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    NomDuCompte
    --------------------------
     Administrateur 
     
     
    Domaine
    -------------------------
     DomaineTest
    Etienne ZINZINDOHOUE
    Billets-Articles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2007, 15h58
  2. Diviser une chaine en plusieurs valeurs
    Par Pitou5464 dans le forum Access
    Réponses: 2
    Dernier message: 07/07/2006, 15h41
  3. Réponses: 6
    Dernier message: 09/06/2006, 13h17
  4. Diviser une chaine de caractère en plusieurs ^^
    Par snake23 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/03/2006, 19h05
  5. [MySQL] Parcourir la liste des emails extraits de la base pour envois de mail
    Par Ylias dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/02/2006, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo