J'exécute une requête à partir de SQL Server Management Studio 2005 qui a un fichier HTML stocké sous forme de chaîne, par exemple:
SELECT html
FROM table
Cette requête s'affiche bien dans la fenêtre "Résultats", c'est-à-dire que chaque ligne contient une chaîne de l'ensemble du fichier HTML, avec un enregistrement par ligne.
Cependant, lorsque j'utilise l'option "Résultats dans un fichier", il l'exporte en tant que CSV inutilisable avec des sauts de ligne dans le CSV se produisant partout où des sauts de ligne se sont produits dans le champ (c'est-à-dire dans le HTML), plutôt plus d'une par ligne selon les besoins. J'ai essayé de tester les résultats de la requête> Options de requête pour les résultats "Grille" et "Texte", en vain. Les champs exportés vers le CSV ne pas semblent être inclus entre guillemets.
Quelques idées:
Serait-il possible d'ajouter des guillemets avec le SQL?
Existe-t-il des T-SQL équivalents aux commandes WITH CSV HEADER qui sont possibles dans d'autres dialectes?
Je ne vois pas où vous aurez beaucoup de succès à exporter du html vers csv - ce n'est vraiment pas à cela que csv est destiné. Vous feriez mieux d'utiliser un format xml, où le code html peut être enfermé dans un élément cdata.
Cela dit, vous pouvez essayer d'utiliser la fonction Remplacer pour supprimer les sauts de ligne et vous pouvez ajouter manuellement les guillemets - quelque chose comme ceci:
select '"' + replace (replace (html, char(10), ''), char(13), '') + '"'
Si votre valeur html peut contenir des guillemets doubles, vous devez les échapper.
Si vous utilisez Visual Studio, Server Explorer est une solution alternative. Vous pouvez copier et coller correctement les résultats de sa grille.
Selon le chose la plus proche d'une norme que nous avons , un fichier CSV correctement formaté doit citer des champs contenant soit le séparateur (le plus souvent ;
ou ,
) ou un saut de ligne.
SQL Server Management Studio peut le faire, mais étonnamment, cette option n'est pas activée par défaut. Pour l'activer, allez dans Outils → Options → Résultats de la requête → Résultats dans la grille et cochez "Citer les chaînes contenant des séparateurs de liste lors de l'enregistrement des résultats .csv"
Je sais quel âge cela a, mais je l'ai trouvé et d'autres le pourraient aussi. Vous voudrez peut-être pousser la réponse de Martijn van Hoof un peu plus loin et supprimer les éventuels onglets (char (9)) en plus du retour chariot (13) et du saut de ligne (10).
SELECT REPLACE(REPLACE(REPLACE(mycolumn, CHAR(9), ''), CHAR(10), ''), CHAR(13), '') as 'mycolumn' FROM mytable
colonne avec des sauts de ligne: "macolonne"
SELECT REPLACE(REPLACE(mycolumn, CHAR(13), ''), CHAR(10), '') as `mycolumn` FROM mytable
Cela remplace les sauts de ligne.
je sais que c'est une très vieille question à laquelle on a répondu maintenant, mais cela devrait aussi aider:
SELECT html
From table
For Xml Auto, Elements, Root('doc')
il devrait cracher un xml
et ensuite vous pouvez importer ce xml dans Excel
trouvé cela utile mais je rencontrais toujours des problèmes car mon champ était de type texte, donc je cast le texte en tant que varchar(8000)
et au-dessus, remplacer fonctionne comme un charme
REPLACE(REPLACE(CAST([TEXT FIELD] AS VARCHAR(8000)), CHAR(10), ' '), CHAR(13), ' ') AS 'Field Name',
Outil d'importation et d'exportation de données SQL Server, FTW!
Démarrer -> Programmes -> Microsoft SQL Server -> Importer et exporter des données
Exemple de requête:
select *
from (
select 'Row 1' as [row], 'Commas, commas everywhere,' as [commas], 'line 1
line 2
line 3' as [linebreaks]
union all
select 'Row 2' as [row], 'Nor any drop to drink,' as [commas], 'line 4
line 5
line 6' as [data]
) a
sortie CSV:
"row","commas","linebreaks"
"Row 1","Commas, commas everywhere,","line 1
line 2
line 3"
"Row 2","Nor any drop to drink,","line 4
line 5
line 6"
Avertissement: Vous devrez peut-être faire preuve de créativité avec des guillemets doubles dans les données. Bonne chance!