Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Exportar Datos De Varias Tablas A La Vez En Txt

Estas en el tema de Exportar Datos De Varias Tablas A La Vez En Txt en el foro de SQL Server en Foros del Web. Hola gente qué tal esas lluvias!, necesito exportar los datos de... un millon de tablas aproximadamente a formato txt (un txt por cada tabla). El ...
  #1 (permalink)  
Antiguo 17/06/2008, 09:55
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 20 años
Puntos: 0
Exclamación Exportar Datos De Varias Tablas A La Vez En Txt

Hola gente qué tal esas lluvias!, necesito exportar los datos de... un millon de tablas aproximadamente a formato txt (un txt por cada tabla). El caso es que desde SQL SERVER 2005 solo me deja exportar tabla por tabla, desde access tampoco me deja exportar varias a la vez ni desde excell... en fin que no se como hacerlo sin perder un siglo de mi tiempo en tareas repetitivas. Alguien me habló de unos paquetes o algo así pero no se que significa exactamente, ¿teneis idea de como hacerlo? Muchísimas gracias de antemano!.
  #2 (permalink)  
Antiguo 17/06/2008, 10:33
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Exportar Datos De Varias Tablas A La Vez En Txt

La respuesta es DTS (Data Transformation Services). Es una herramienta de SQL Server que te permite automatizar la exportacion e importacion de datos. Usa codigo VB para poder personalizar ciertos parametros como nombres de tablas, rutas (en caso cambien), etc...
Yo use el DTS de SQL Server 2000 y VB 6, pero en la version 2005 probablemente sea mas sencillo de utilizar. Luego de programar las tareas, las calendarizas y lograste la automatizacion.
  #3 (permalink)  
Antiguo 18/06/2008, 04:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 20 años
Puntos: 0
Respuesta: Exportar Datos De Varias Tablas A La Vez En Txt

Ok pues gracias voy a mirar como funciona. Un saludo!
  #4 (permalink)  
Antiguo 18/06/2008, 04:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 20 años
Puntos: 0
Respuesta: Exportar Datos De Varias Tablas A La Vez En Txt

Bueno me respondo a mi misma, encontré algo interesante a raiz de tu respuesta Jota, lo pasteo para que alguien pueda echar mano de ello si necesita lo mismo. (Está en inglés).

To move all the table data from database to xls or doc or txt files table
Many times we come accross to move data from database to external files such as word,xls or data files. Here is the script that move all tables data to specified files. Target file names are the table names.
specify the folder path, server name and @FILE_TYPE wether
.xls or .doc or .txt

---************************************************** **********************************************
-- AUTHOR : VEERESH V NASHI (DBA)
-- CREATED ON : 05-04-2006
-- PUROSE : To move all the table data from database to xls or doc or txt files table
---name as the file name

SET NOCOUNT ON
GO
declare @tables table( tid int identity,tname sysname)
declare @index int
declare @Max int
declare @QUERY varchar(4000)
declare @QUERY1 varchar(4000)
DECLARE @Tname sysname
DECLARE @DBNAME SYSNAME
DECLARE @Folder_Path sysname
DECLARE @SERVER_NAME SYSNAME
DECLARE @FILE_TYPE VARCHAR(5)
insert into @tables (tname)
select name from sysobjects where xtype='u'
set @Max = @@identity

------USER SETTINGS-----------------
SET @Folder_Path = 'D:\XLS'
SET @SERVER_NAME ='javauser3\veena'
SET @FILE_TYPE = 'XLS' -- EXCEL OR DATAFILES LIKE TXT OR DOC
------USER SETTINGS-----------------

SET @DBNAME = DB_NAME()
SET @QUERY =''
SET @QUERY1 =''
SET @Index = 1
WHILE @index <= @max
BEGIN
SELECT @Tname = tname from @tables where tid = @Index
SET @QUERY1 ='SELECT '
SELECT @QUERY1 = @QUERY1 + '''' + QUOTENAME( NAME ,'''') + ''' AS ' + NAME + ' ,' FROM SYSCOLUMNS where id = object_id(@tname)
SET @QUERY1 = LEFT( @QUERY1,LEN( @QUERY1 ) - 1 )


SET @QUERY='SELECT '
SELECT @QUERY = @QUERY + 'CAST ( '+NAME + ' AS VARCHAR('+ LTRIM( STR( LENGTH )) +')),' FROM SYSCOLUMNS where id = object_id(@tname)
SET @QUERY = LEFT( @QUERY,LEN( @QUERY ) -1 ) +' FROM '+@DBNAME+'.dbo.'+ @TNAME


SET @QUERY1 = @QUERY1 + ' UNION ALL ' + @QUERY

PRINT 'MOVING '+@tname +' TO ' + @Folder_Path +' AS FILE NAME ' +@TNAME +'.'+@FILE_TYPE

SELECT @Query= 'master.dbo.xp_cmdshell
''bcp.exe "'+@QUERY1 + ' " queryout "'+@Folder_Path+'\' + @tname + '.'+@FILE_TYPE +'" -c -T -S '+@SERVER_NAME +''''

EXECUTE(@Query)
--PRINT (@Query1)
set @Index = @Index + 1
end

GO
SET NOCOUNT ON
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:14.