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 :

Un petit coup de pouce sql server 2005, merci


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut Un petit coup de pouce sql server 2005, merci
    Bonjour à toutes et tous.
    Je suis à la recherche d'une instruction permettant d'exporter une table vers un fichier txt. Il y a bien bcp que j'ai testé à partir d'un fichier bat et cela fonctionne très bien. Est il possible d'intégrer la fonction bcp dans un query Sql. J'ai essayé avec de mutiples syntaxe mais pas moyen, l'instruction bute toujours sur le fichier d'export. Je joins une copie du query.
    J'ai bien cherché sur msdn et sur les forums mais je ne trouve aucune instruction claire à ce sujet.
    Merci pour votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    /* Ouverture DB */
     
    use CC_max_test_09_01_08_08_09_43R
     
     
    /* Effacement table temporaire Table_Temp_Al*/
    delete from dbo.Table_Temp_Al 
     
    /* Copie des champs de table dbo.AlgHitListDataRT_tmp vers Table dbo.Table_temp_Al */
    insert into dbo.Table_temp_Al(datetime,TAG,state,VERRINE)
            select datetime,text4,state,Text7
                from dbo.AlgHitListDataRT_tmp
                    where datetime>'2008-04-10 09:19:20'
                    and datetime < '2008-04-10 09:19:40' 
     
    /* Transformation du champ state1 par rapport au champ state */
    update dbo.Table_Temp_Al 
        set state1=(select libelle from dbo.Table_1
            where (numero=state))
     
    /* Transformation du champ datetime1 par rapport au champ datetime */
    update dbo.Table_Temp_Al
        set SPARE = '"' + '0' + '"'
    update dbo.Table_Temp_Al
        set datetime1 = '"' + convert (varchar(50),datetime,126) + '"'
    update dbo.Table_Temp_Al
        set TAG = '"' + TAG + '"'
    update dbo.Table_Temp_Al
        set STATE1 = '"' + STATE1 + '"'
    update dbo.Table_Temp_Al
        set VERRINE = '"' + VERRINE + '"'
     
    exec xp_cmdshell bcp select spare,datetime1,TAG,STATE1,VERRINE 
    from CC_max_test_09_01_08_08_09_43R..Table_Temp_Al 
    queryout "c:\texte.txt" -c -t, -S afelsvrii1\wincc -T

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Citation Envoyé par jlgodart Voir le message
    exec xp_cmdshell bcp select spare,datetime1,TAG,STATE1,VERRINE
    from CC_max_test_09_01_08_08_09_43R..Table_Temp_Al
    queryout "c:\texte.txt" -c -t, -S afelsvrii1\wincc -T
    La commande doit être entourée de quotes pour que cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXEC xp_cmdshell 'bcp "select  spare,datetime1,TAG,STATE1,VERRINE 
    from CC_max_test_09_01_08_08_09_43R..Table_Temp_Al" 
    queryout "c:\texte.txt" -c  -t, -S "afelsvrii1\wincc" -T'
    Prenez garde également à ce que le compte utilisé par le service sqlserver ait accès à votre répertoire cible

    ++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    Meci pour votre réponse, je la teste demain au bureau.
    Bonne soirée.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous pouvez écrire plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    -- Changement de contexte de DB
    USE CC_max_test_09_01_08_08_09_43R
    GO
     
    -- Effacement table temporaire Table_Temp_Al
    DELETE FROM dbo.Table_Temp_Al
     
    -- Copie des colonnes de la table dbo.AlgHitListDataRT_tmp vers Table dbo.Table_temp_Al
    INSERT INTO dbo.Table_temp_Al
    (
    	datetime,
    	TAG,
    	state,
    	VERRINE
    )
    SELECT datetime,
    		text4,
    		state,
    		Text7
    FROM dbo.AlgHitListDataRT_tmp
    WHERE datetime BETWEEN '2008-04-10 09:19:20' AND '2008-04-10 09:19:40'
     
    -- Transformation du champ state1 par rapport au champ state
    UPDATE dbo.Table_Temp_Al
    SET state1 = (
    				SELECT '"' + libelle + '"'
    				FROM dbo.Table_1
    				WHERE numero = state
    			),
    	SPARE = '"' + '0' + '"',
    	datetime1 = '"' + CONVERT (VARCHAR(50), DATETIME, 126) + '"', -- Transformation du champ datetime1 par rapport au champ datetime
    	TAG = '"' + TAG + '"',
    	VERRINE = '"' + VERRINE + '"'
     
     
    DECLARE @bcp VARCHAR(256)
    SET @bcp = 'bcp SELECT spare,datetime1,TAG,STATE1,VERRINE FROM CC_max_test_09_01_08_08_09_43R.dbo.Table_Temp_Al queryout "c:\texte.txt" -c -t, -S afelsvrii1\wincc -T'
     
    EXEC MASTER.dbo.xp_cmdshell @bcp, NO_OUTPUT
    Est il possible d'intégrer la fonction bcp dans un query Sql. J'ai essayé avec de mutiples syntaxe mais pas moyen, l'instruction bute toujours sur le fichier d'export
    Non, on ne peut pas utiliser BCP directement dans un script SQL.
    BCP est un utilitaire en ligne de commande, que vous pouvez utiliser en commandes DOS.
    C'est pourquoi vous devez appeler xp_cmdshell, qui est une procédure stockée étendue système pour exécuter votre commande BCP

    En revanche vous pouvez créer un script SQLCMD, qui est aussi un utilitaire en ligne de commandes, à partir de Management Studio, en cliquant sur l'icône "Mode SQLCMD" de la barre d'outils "Editeur SQL".

    @++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    Je me suis rendu compte en essayant la commande bcp dans un query que j'avais toujours un retour erreur syntaxe. Par contre, je vais essayer la seconde proposition demain.
    Pour le moment, j'ai résolu le problème en faisant une tache planifiée dans windows qui exécute la commande bcp dant un .bat.
    Je précise aussi que je travaille dans un projet siemens wincc 6.2 et que la table est une tabe wincc sous sql server 2005, ce qui ne change rien dans le principe.
    Merci à tous pour cette aide.
    Bonne soirée.

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Vous avez oublié les guillemets encadrant la requête

    La chaîne commande devient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'bcp "SELECT spare,datetime1,TAG,STATE1,VERRINE FROM CC_max_test_09_01_08_08_09_43R.dbo.Table_Temp_Al" queryout c:\texte.txt -c -t, -S afelsvrii1\wincc -T'
    @++

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

Discussions similaires

  1. Noob a besoin d'un petit coup de pouce en SQL
    Par hyartank dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2014, 18h33

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