Unir dos filas en una sola.

12/01/2005 - 18:31 por Salvador Ramos | Informe spam
Hola:

Estoy haciendo un proceso de importación a SQL Server un poco peculiar.
Tengo un fichero .txt que contiene un listado, éste lleva encabezados,
números de página, etc... y además en el detalle cada fila está impresa con
datos en dos líneas.

He conseguido eliminar toda la información que no me vale para guardarla en
una tabla. Ahora me queda unir cada dos líneas en una sola, y esa es mi
duda, como podría hacerlo de forma que realmente se uniese una línea y la
siguiente en una sola ? Os paso un ejemplo de lo que tengo (además indicaros
que la tabla sólo tiene un campo VarChar(300) llamado Texto):
0001 Pepe Lopez
12345
0002 Juan Garcia
11112
...

Y lo que necesito es:
0001 Pepe Lopez 12345
0002 Juan Garcia 11112

No habría ningún problema en añadir algún campo a dicha tabla, ya que es una
tabla temporal mía que puedo poner el diseño que necesite. Por ahora tiene
un sólo campo, porque estoy importando como un sólo campo de texto cada
línea del listado, para posteriormente con SUBSTRING ir extrayendo las
partes que necesito y guardandolas en otra tabla ya definitiva con los
campos que necesito.

Muchas gracias

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

Preguntas similare

Leer las respuestas

#11 Salvador Ramos
13/01/2005 - 11:11 | Informe spam
Muchas gracias, funcionó perfectamente :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Liliana Sorrentino" escribió en el mensaje
news:eSPEkNN%
No sé el volumen de tu información así que no me juego por la performance,
pero tal vez esto te sirva:

create table #tabla
(Texto VarChar(300))
insert #tabla select '0001 Pepe Lopez'
insert #tabla select '12345'
insert #tabla select '0002 Juan Garcia'
insert #tabla select '11112'

select identity (smallint, 1, 1) as orden, texto
into #tablaOrden
from #tabla

select t1.texto + ' ' + t2.texto
from #tablaOrden t1
inner join #tablaOrden t2 on t2.orden = t1.orden + 1
where t1.orden % 2 <> 0

Cariños, Liliana.

"Salvador Ramos" escribió en el
mensaje news:#RrUxGN#
Si :-)


Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Liliana Sorrentino" escribió en el


mensaje
news:%23Q%23szEN%
> Hola Salvador,
> El archivo tiene siempre el mismo formato? ¿La primera línea de las dos


a
> unir tiene cuatro dígitos + espacio + cualquierotracosa?
>
> "Salvador Ramos" escribió en el
> mensaje news:OWcKRyM#
>> Hola:
>>
>> Estoy haciendo un proceso de importación a SQL Server un poco
>> peculiar.
>> Tengo un fichero .txt que contiene un listado, éste lleva encabezados,
>> números de página, etc... y además en el detalle cada fila está
>> impresa
> con
>> datos en dos líneas.
>>
>> He conseguido eliminar toda la información que no me vale para


guardarla
> en
>> una tabla. Ahora me queda unir cada dos líneas en una sola, y esa es
>> mi
>> duda, como podría hacerlo de forma que realmente se uniese una línea y


la
>> siguiente en una sola ? Os paso un ejemplo de lo que tengo (además
> indicaros
>> que la tabla sólo tiene un campo VarChar(300) llamado Texto):
>> 0001 Pepe Lopez
>> 12345
>> 0002 Juan Garcia
>> 11112
>> ...
>>
>> Y lo que necesito es:
>> 0001 Pepe Lopez 12345
>> 0002 Juan Garcia 11112
>>
>> No habría ningún problema en añadir algún campo a dicha tabla, ya que


es
> una
>> tabla temporal mía que puedo poner el diseño que necesite. Por ahora
>> tiene
>> un sólo campo, porque estoy importando como un sólo campo de texto
>> cada
>> línea del listado, para posteriormente con SUBSTRING ir extrayendo las
>> partes que necesito y guardandolas en otra tabla ya definitiva con los
>> campos que necesito.
>>
>> Muchas gracias
>>
>> Un saludo
>> Salvador Ramos
>> Murcia - España
>> [Microsoft MVP SQL Server]
>> www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
>>
>>
>
>






Respuesta Responder a este mensaje
#12 Salvador Ramos
13/01/2005 - 11:12 | Informe spam
Muchas gracias :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Ramiro Hernandez R." escribió en el mensaje
news:eB9Ho7P%
Por que no creas otra tabla de paso con un campo como identity llamemosle
"campo1" y que comienze en 1
y el campo donde dejas los datos llamemosle "texto"
y la tabla temporal "tablatemporal"
y otra tabla identica que va a ser la "tablafinal"

luego corres las siguiente instruciones
Insert InTo tablafinal (texto)
Select a.texto + ' ' + b.texto
From tablatemporal As a
Inner Join tablatemporal As b
On b.Campo1 = a.Campo1 + 1
And a.Campo1 % 2 = 0
Where a.Campo1 % 2 = 1


"Salvador Ramos" escribió en el
mensaje news:%23wXrmGN%
Lo estoy haciendo todo desde SQL Server, en un paquete DTS

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Manuel Vera" escribió en el mensaje
news:OrfRa7M%
> El archivo de texto lo lees desde VB o desde SQLServer?
>
> MV
>
> "Salvador Ramos" wrote in message
> news:OWcKRyM%
>> Hola:
>>
>> Estoy haciendo un proceso de importación a SQL Server un poco
>> peculiar.
>> Tengo un fichero .txt que contiene un listado, éste lleva encabezados,
>> números de página, etc... y además en el detalle cada fila está
>> impresa
> con
>> datos en dos líneas.
>>
>> He conseguido eliminar toda la información que no me vale para


guardarla
> en
>> una tabla. Ahora me queda unir cada dos líneas en una sola, y esa es
>> mi
>> duda, como podría hacerlo de forma que realmente se uniese una línea y


la
>> siguiente en una sola ? Os paso un ejemplo de lo que tengo (además
> indicaros
>> que la tabla sólo tiene un campo VarChar(300) llamado Texto):
>> 0001 Pepe Lopez
>> 12345
>> 0002 Juan Garcia
>> 11112
>> ...
>>
>> Y lo que necesito es:
>> 0001 Pepe Lopez 12345
>> 0002 Juan Garcia 11112
>>
>> No habría ningún problema en añadir algún campo a dicha tabla, ya que


es
> una
>> tabla temporal mía que puedo poner el diseño que necesite. Por ahora
>> tiene
>> un sólo campo, porque estoy importando como un sólo campo de texto
>> cada
>> línea del listado, para posteriormente con SUBSTRING ir extrayendo las
>> partes que necesito y guardandolas en otra tabla ya definitiva con los
>> campos que necesito.
>>
>> Muchas gracias
>>
>> Un saludo
>> Salvador Ramos
>> Murcia - España
>> [Microsoft MVP SQL Server]
>> www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
>>
>>
>
>






Respuesta Responder a este mensaje
#13 Salvador Ramos
13/01/2005 - 11:13 | Informe spam
Muchas gracias :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Gustavo Larriera [MVP]" escribió en el mensaje
news:e$Uva3N%
Tal vez esto te sirva. Asumo que la tabla de lineas tiene una columna
numerada secuencialmente:

USE tempdb
GO

CREATE TABLE linea (numero int, texto VARCHAR(300))
GO

INSERT linea VALUES (1, 'primera linea')
INSERT linea VALUES (2, 'segunda linea')
INSERT linea VALUES (3, 'tercera linea')
INSERT linea VALUES (4, 'cuarta linea')
INSERT linea VALUES (5, 'quinta linea')
GO

CREATE TABLE resultado (numero int, texto VARCHAR(300))
GO

INSERT resultado
SELECT numero, texto
FROM linea
WHERE numero % 2 <> 0
ORDER BY numero ASC

UPDATE resultado
SET texto = texto + ISNULL((SELECT TOP 1 texto FROM linea WHERE numero >
resultado.numero AND numero % 2 = 0 ORDER BY numero ASC), '')

SELECT * FROM resultado

DROP TABLE linea
DROP TABLE resultado


"Salvador Ramos" wrote in message
news::
Hola:

Estoy haciendo un proceso de importación a SQL Server un poco peculiar.
Tengo un fichero .txt que contiene un listado, éste lleva encabezados,
números de página, etc... y además en el detalle cada fila está impresa
con
datos en dos líneas.

He conseguido eliminar toda la información que no me vale para guardarla
en
una tabla. Ahora me queda unir cada dos líneas en una sola, y esa es mi
duda, como podría hacerlo de forma que realmente se uniese una línea y la

siguiente en una sola ? Os paso un ejemplo de lo que tengo (además
indicaros
que la tabla sólo tiene un campo VarChar(300) llamado Texto):
0001 Pepe Lopez
12345
0002 Juan Garcia
11112
...

Y lo que necesito es:
0001 Pepe Lopez 12345
0002 Juan Garcia 11112

No habría ningún problema en añadir algún campo a dicha tabla, ya que es
una
tabla temporal mía que puedo poner el diseño que necesite. Por ahora
tiene

un sólo campo, porque estoy importando como un sólo campo de texto cada
línea del listado, para posteriormente con SUBSTRING ir extrayendo las
partes que necesito y guardandolas en otra tabla ya definitiva con los
campos que necesito.

Muchas gracias

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)




Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida