variable tabla read generar formato extraer exportar desde datos crear archivo sql-server sql-server-2005 xp-cmdshell

tabla - Leyendo un archivo de texto con SQL Server



sql server read file to variable (5)

Estoy intentando leer un archivo de texto de una consulta SQL (SQL Server 2005) pero no estoy teniendo ninguna suerte. He probado varias cosas con EXEC y xp_cmdshell, pero no están funcionando. Esta es la forma general en que he tratado de abordar esto:

CREATE TABLE temp (data varchar(2000)); INSERT temp EXEC master.dbo.xp_cmdshell ''type file.txt'';

Entonces trato de seleccionar datos de la tabla temporal. He buscado mucho y no puedo decir lo que me estoy equivocando. ¿Ayuda?


¿Cómo se ve tu archivo de texto? Cada línea un registro?

Tendrás que revisar la declaración BULK INSERT , que debería tener el siguiente aspecto:

BULK INSERT dbo.YourTableName FROM ''D:/directory/YourFileName.csv'' WITH ( CODEPAGE = ''1252'', FIELDTERMINATOR = '';'', CHECK_CONSTRAINTS )

Aquí, en mi caso, estoy importando un archivo CSV, pero también debería poder importar un archivo de texto.

De los documentos de MSDN: aquí hay una muestra que, con suerte, funciona para un archivo de texto con un campo por fila:

BULK INSERT dbo.temp FROM ''c:/temp/file.txt'' WITH ( ROWTERMINATOR =''/n'' )

Parece funcionar bien en mi entorno de prueba :-)


¿Necesita hacerlo una vez, o como parte de la operación normal de la base de datos (es decir, en respuesta a un desencadenante, un evento programado, etc.)?

De cualquier manera, es mejor crear un paquete SSIS.

  1. En SQL Management Studio, haga clic derecho en la base de datos.
  2. Seleccionar tareas | Importar datos ...
  3. Siga las instrucciones del asistente. Seleccione "archivo de texto plano" como el proveedor cuando se le solicite.

No he usado dbo.xp_cmdshell (según tu ejemplo), pero me imagino que capturar la salida es el problema.




BULK INSERT dbo.temp FROM ''c:/temp/file.txt'' --- path file in db server WITH ( ROWTERMINATOR =''/n'' )

Funciona para mí, pero guarda como editplus para codificar ansi en varios idiomas.