Nous devons écrire les résultats de la requête SELECT dans un fichier csv. Comment faire pour utiliser T-SQL dans SQL Server 2008 R2? Je sais que cela peut être fait dans SSIS, mais pour certaines raisons, nous n'avons pas cette option.
J'ai essayé d'utiliser le proc suggéré dans l'article ci-dessous, mais lorsque j'exécute le proc, SQL se plaint de ne pouvoir exécuter sys.sp_OACreate et sys.sp_OADestroy qui sont appelés dans ce proc.
Savez-vous comment nous pouvons activer ces composants ou connaître un meilleur moyen d'écrire dans un fichier à l'aide de T-SQL?
Merci d'avance.
En ajoutant à la réponse précédente, ce qui vous aide à automatiser l’action. Si vous n’en avez besoin que de temps en temps, vous pouvez le faire dans Management Studio. Il vous suffit de cliquer avec le bouton droit de la souris sur l’en-tête - Enregistrer les résultats sous -> choisissez un fichier .csv .
Ou si vous souhaitez le faire pour chaque instruction select que vous exécutez, vous pouvez modifier le sens de sortie des résultats dans un fichier. Utilisez Outils -> Options -> Résultats de la requête - Résultats à archiver .
Un autre moyen, qui peut être automatisé facilement et utilise SSIS, consiste à utiliser la fonctionnalité Exporter les données de Management Studio. Faites un clic droit sur la base de données -> Tâches -> Exporter des données. Il y a un assistant avec beaucoup d'options. Vous devez choisir la base de données source, la destination et d'autres options. Pour la destination, assurez-vous qu'il s'agit d'un "fichier plat", parcourez-le et choisissez le type .csv. Choisissez le formatage souhaité. Vous obtiendrez à la fin un package SSIS pouvant être enregistré localement et répété si nécessaire.
la source
Utilisez T-SQL
Mais il y a quelques mises en garde:
la source
Low tech, mais ...
la source
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
comme un nom de colonne et affiche NULL partout.Il semble que vous ayez déjà une solution acceptable, mais si vous avez configuré db mail, vous pouvez potentiellement faire quelque chose comme ceci:
Si vous envoyez le fichier par courrier électronique quelque part, cela pourrait vous éviter quelques étapes.
la source
Cela peut facilement être fait en 3 étapes:
Ecrivez votre requête en tant que
SELECT INTO
requête. Cela exportera essentiellement les résultats de votre requête dans une table.Notez que cette table ne peut pas exister lorsque la requête est exécutée, car ce type de requête souhaite créer la table dans le cadre de l'exécution.
Ensuite, utilisez SSIS pour exporter les résultats de cette table
.csv
. L'assistant d'exportation SSIS vous permet de choisir votre délimiteur, etc. C'est très pratique pour utiliser un | délimiteur dans les cas où le jeu de résultats contient des virgules.Clic droit sur
DB Name > Tasks > Export Data
Une fois l'exportation terminée, exécutez la
DROP TABLE
commande pour nettoyer votre table de journal.la source
J'utilise MS Access DoCMD pour exporter des fichiers CSV à partir de SQL Server. Il est capable de le faire avec une seule commande. La base de données access est uniquement utilisée pour activer la commande access. Il fonctionne bien et, comme avantage supplémentaire (vous ne savez pas pourquoi), il crée un fichier schema.ini pour la table exportée.
Adam
la source
Cette procédure générera un fichier CSV avec le résultat de la requête que vous transmettez en tant que paramètre. Le second paramètre est votre nom de fichier CSV, assurez-vous de le transmettre avec un chemin d'accès inscriptible valide.
Voici le script pour créer la procédure:
la source