[SQL Server] Envoyer le résultat d'une requête SQL vers un fichier csv

-- =============================================

-- Author:          Zouhaier KHARROUBI

-- Create date: 21/09/2022

-- Description:     Envoyer le résultat d'une requête SQL vers un fichier csv

-- =============================================

DECLARE @Instance_Source         NVARCHAR(100)

       ,@Database_Source          NVARCHAR(128)

       ,@Requete                 NVARCHAR(3000)='SELECT [column1],[column2],[column3],[column4],[column5],[column6]  FROM [MaBase].[dbo].[MaTable] ORDER BY [num_lig]'

       ,@Separateur               CHAR(1)=';'

       ,@FichierDestination       NVARCHAR(500)='monFichier'

       ,@FichierExtension         NVARCHAR(10)='.csv'

       ,@CheminDestination        NVARCHAR(500)='\\MonServeurFichier\Mesfichiers\Generation'

 

BEGIN

       -- SET NOCOUNT ON added to prevent extra result sets from

       -- interfering with SELECT statements.

       SET NOCOUNT ON;

 

    -- Insert statements for procedure here

 

       IF CHARINDEX('\',REVERSE(@Chemindestination),1)<>1

             BEGIN

                    SELECT @Chemindestination = @Chemindestination + '\'

             END

 

       SELECT @FichierDestination = @Chemindestination + @FichierDestination + @FichierExtension

      

       SELECT @Requete = 'sqlcmd -f 65001 -V1 -I -u -E -S "' + @Instance_Source + '" -m1 -d "' + @Database_Source

       + '" -E -s"' + @Separateur + '" -W -Q "' + @Requete   + '" -r0 -b -o "' + @FichierDestination + '"' 

 

       EXEC Master..xp_cmdshell @Requete

END