sql-server-2005 - ejemplos - ejecutar bcp desde sql server
Necesidad de exportar campos que contienen saltos de lĂnea como CSV de SQL Server (9)
De acuerdo con lo más parecido a un estándar que tenemos , un archivo CSV correctamente formateado debe citar campos que contienen el separador (más a menudo ;
o ,
) o un salto de línea.
SQL Server Management Studio puede hacer eso, pero sorprendentemente no tiene esta opción habilitada de forma predeterminada. Para habilitarlo, vaya a Herramientas → Opciones → Resultados de la consulta → Resultados a la cuadrícula y marque "Citar cadenas que contienen separadores de lista al guardar resultados .csv"
Estoy ejecutando una consulta de SQL Server Management Studio 2005 que tiene un archivo HTML almacenado como una cadena, por ejemplo:
SELECT html
FROM table
Esta consulta se muestra en la ventana "Resultados" muy bien, es decir, cada fila contiene una cadena de todo el archivo HTML, con un registro por fila.
Sin embargo, cuando uso la opción "Resultados para archivar", la exporta como un CSV inutilizable con saltos de línea en el CSV que ocurren donde ocurrieron saltos de línea en el campo (es decir, en el HTML), en lugar de uno por fila según sea necesario. Traté de experimentar con las Opciones de consulta> Consulta para los resultados "Cuadrícula" y "Texto", pero no sirvió para nada. Los campos exportados al CSV no parecen estar entre comillas.
Algunas ideas:
¿Sería posible agregar comillas con el SQL?
¿Hay algún T-SQL equivalente a los comandos WITH CSV HEADER que son posibles en otros dialectos?
Herramienta de importación y exportación de datos de SQL Server, FTW!
Inicio -> Programas -> Microsoft SQL Server -> Importar y exportar datos
Consulta de muestra:
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
Salida 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"
Descargo de responsabilidad: es posible que deba ser creativo con comillas dobles en los datos. Buena suerte!
No veo dónde tendrá mucho éxito exportar html a csv, realmente no es para lo que está diseñado el csv. Sería mejor utilizar un formato xml, donde el código html puede incluirse en un elemento cdata.
Dicho esto, podría intentar usar la función Reemplazar para eliminar los saltos de línea, y podría agregar manualmente las comillas, algo como esto:
select ''"'' + replace (replace (html, char(10), ''''), char(13), '''') + ''"''
Si su valor html puede tener comillas dobles, deberá escaparse.
Resolví esta limitación al crear una base de datos de Access, utilizando la función "Vincular a la fuente de datos creando una tabla vinculada", abriendo la tabla "vinculada" y luego copiar / pegar a Excel desde allí. Excel puede guardar los datos CSV según sea necesario. También debería poder conectarse directamente desde Excel, pero la función "tabla vinculada" en Access me permite configurar varias tablas a la vez con bastante rapidez.
Sé cuántos años tiene esto, pero lo encontré y otros también. Es posible que desee llevar la respuesta de Martijn van Hoof un paso más allá y eliminar posibles pestañas (char (9)) además del retorno de carro (13) y avance de línea (10).
SELECT REPLACE(REPLACE(REPLACE(mycolumn, CHAR(9), ''''), CHAR(10), ''''), CHAR(13), '''') as ''mycolumn'' FROM mytable
Sé que esta es una pregunta muy antigua y ha sido respondida ahora, pero esto debería ayudar también:
SELECT html
From table
For Xml Auto, Elements, Root(''doc'')
debería escupir un xml
y luego puedes importar ese xml en excel
Si está usando Visual Studio, Server Explorer es una solución alternativa. Puede copiar y pegar correctamente los resultados de su cuadrícula.
columna con saltos de línea: "mycolumn"
SELECT REPLACE(REPLACE(mycolumn, CHAR(13), ''''), CHAR(10), '''') as `mycolumn` FROM mytable
Esto reemplaza los saltos de línea.
encontré esto útil pero todavía estaba golpeando problemas ya que mi campo era de tipo texto así que eché el texto como varchar(8000)
y reemplazarlo funciona como un amuleto
REPLACE(REPLACE(CAST([TEXT FIELD] AS VARCHAR(8000)), CHAR(10), '' ''), CHAR(13), '' '') AS ''Field Name'',