Necesitamos escribir los resultados de la consulta SELECT en un archivo csv. ¿Cómo se puede hacer usando T-SQL en SQL Server 2008 r2? Sé que se puede hacer en SSIS, pero por alguna razón, no tenemos esta opción.
Traté de usar el proceso sugerido en el artículo a continuación, pero cuando ejecuto el proceso, SQL se queja de que no puede ejecutar sys.sp_OACreate y sys.sp_OADestroy que se llaman en este proceso.
¿Sabes cómo podemos activar estos componentes o conoces una mejor manera de escribir en un archivo usando T-SQL?
Gracias por adelantado.
fuente
Además de la respuesta anterior, que le ayuda a automatizar la acción, si la necesita solo de vez en cuando puede hacerlo en Management Studio, simplemente haga clic derecho en el encabezado - Guardar resultados como -> elija un archivo .csv .
O si desea hacer eso para cada instrucción de selección que ejecute, puede cambiar la dirección de salida de los resultados a un archivo. Use Herramientas -> Opciones -> Resultados de la consulta - Resultados para archivar .
Otra forma, que se puede automatizar fácilmente y hace uso de SSIS, es mediante la función Exportar datos de Management Studio. Haga clic derecho en la base de datos -> Tareas -> Exportar datos. Hay un asistente con muchas opciones allí. Debe elegir la base de datos de origen, el destino y otras opciones. Para el destino, asegúrese de que sea "Archivo plano", explore y elija el tipo .csv, elija el formato que necesite y al final obtendrá un paquete SSIS que puede guardarse localmente y repetirse según sea necesario.
fuente
Use T-SQL
Pero, hay un par de advertencias:
fuente
Baja tecnología, pero ...
fuente
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
como un nombre de columna e imprime NULL por todo el lugar.Parece que ya tiene una solución aceptable, pero si tiene configurado el correo DB, podría hacer algo como esto:
Si de todas formas está enviando el archivo por correo electrónico en algún lugar, podría ahorrarle algunos pasos.
fuente
Esto se puede hacer fácilmente en un proceso de 3 pasos:
Escribe tu consulta como una
SELECT INTO
consulta. Esto esencialmente exportará los resultados de su consulta a una tabla.Tenga en cuenta que esta tabla no puede existir cuando se ejecuta la consulta, ya que este tipo de consulta desea crear la tabla como parte de la ejecución.
Luego use SSIS para exportar los resultados de esa tabla a
.csv
. El asistente de exportación SSIS le permite elegir su delimitador, etc. Esto es realmente útil para usar un | delimitador en casos donde el conjunto de resultados contiene comas.Haga clic derecho en
DB Name > Tasks > Export Data
Una vez que se complete la exportación, ejecute el
DROP TABLE
comando para limpiar su tabla de registro.fuente
Utilizo MS Access DoCMD para exportar CSV de SQL Server. Es capaz de hacerlo con un solo comando. La base de datos de acceso solo se usa para habilitar el comando de acceso. Funciona bien y, como beneficio adicional (no estoy seguro de por qué), crea un schema.ini para la tabla exportada.
Adán
fuente
Este procedimiento generará un archivo CSV con el resultado de la consulta que pase como parámetro. El segundo parámetro es su nombre de archivo CSV, asegúrese de pasar el nombre del archivo con una ruta de escritura válida.
Aquí está el script para crear el procedimiento:
fuente