Utiliser le séparateur « pipe » avec l’utilitaire BCP

Si l’on tente d’exécuter l’instruction suivante :

bcp « SELECT query_plan FROM ELSUKET.dbo.unTable » queryout « C:\toto.txt » -c -t| -T -S ELSUKET

dans une fenêtre d’invite de commandes ou bien à l’aide de la procédure stockée xp_cmdshell, nous obtenons l’erreur :

‘-T’ is not recognized as an internal or external command, operable program or batch file.

Comment faire pour éviter cela ? C’est très simple :

Il suffit en fait de précéder le pipe par un accent circonflexe, ce qui dans notre cas donnerait la commande :

BCP « SELECT query_plan FROM ELSUKET.dbo.unTable » queryout « C:\toto.txt » -c -t^| -T -S ELSUKET

Le résultat ne se fait pas attendre :

Starting copy…

27 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 172 Average : (156.98 rows per sec.)

Bon BCP !

ElSüket ;)

2 réflexions au sujet de « Utiliser le séparateur « pipe » avec l’utilitaire BCP »

  1. On peut aussi faire simplement :

    BCP « SELECT query_plan FROM ELSUKET.dbo.unTable » queryout « C:toto.txt » -c -t »| » -T -S ELSUKET

    Il me semble que dans ton exemple « ELSUKET » est à la fois nom de base et nom d’instance :

    ¤ ELSUKET nom de base de données
    ———————————
    SELECT query_plan FROM ELSUKET.dbo.unTable

    ¤ ELSUKET nom d’instance
    ———————————
    -S ELSUKET

    ;-)

    A+

Laisser un commentaire