viernes, marzo 03, 2006

Registros duplicados.

Si tuvierais un fichero de texto (tipo txt) con más un millón de registros en el que tuviérais que buscar registros duplicados, ¿cómo lo harías?

Por ejemplo, tienes un fichero con las facturas mensuales de una empresa de telefonía, en el que cada registro del fichero está formado por nº de factura, cliente e importe y quieres comprobar que no le vas a facturar a un mismo cliente dos veces.

Y no me refiero de forma teórica sino qué programa de vuestro PC y qué pasos seguirías para encontrar los duplicados.

7 comentarios:

Gskinner dijo...

Lo primero que se me ha ocurrido es: si tienes instalado en el ordenador un servidor, por ejemplo wampserver (apache, mysql, php), haces una página e introduces el archivo .txt en la base de datos. luego con algún query puedes encontrar las entradas duplicadas de varias formas con tablas y campos. Pero vamos, que seguro que esta es la forma más complicada de hacerlo. También se me ocurre con excel, aunque habría que pensarlo un poco.

raúl solera dijo...

Con excel no podrías ya que como máximo admite unas 65000 líneas, de hecho, en eso reside el problema, en que no puede utilzarse excel u otra hoja de cálculo.
En cualquier caso te aseguro que con un PC normal con windows y office puede hacerse, sin necesidad de servidor.

Pablo Solera dijo...

Esta me la sé.

1. Olvídate del txt. Lo primero que debes hacer es crearte una bdd en access e importar los datos.
2. Con los datos preparados puedes:

-Crear una consulta SQL tipo:
SELECT campo1,campo2, campo3
FROM Prueba
GROUP BY campo1, campo2, campo3
HAVING COUNT (campo1) > 1


-Utilizar el Asistente para crear una
"Consulta de buscar datos duplicados"

Aquí explican cómo meter consultas SQL:
http://basededatos.umh.es/sql/sqlAccess.html

Y aquí cómo acceder al asistente de datos duplicados:
http://www.unav.es/cti/manuales/access97/indice.html#8.8.3

Espero que te sirva. Ten en cuenta que Access tiene un límite de registros, pero es bastante alto, del orden de un par de millones.

Si quieres más, necesitas un SGBD. Yo tiraría a un SQLserver Developer Edition que es muy ligerito.

Un saludo,

Pablo.

raúl solera dijo...

Premio para el caballero, como se notan los genes, efectivamente probablemente la mejor forma de hacerlo es utilizando access.
Yo, lo que he hecho ya un par de veces (en la oficina cada vez que alguien tiene que hacer algo de esto me pregunta a mi) fue crear un programilla con visual basic (el de excel y access no el profesional) que me ordena el fichero por la columna en la que buscas los duplicados y luego lo recorre buscando duplicados adyacentes.
Sin duda menos elegante (y probablemente menos eficiente) que utilizar access y una consulta SQL.

Anónimo dijo...

That's a great story. Waiting for more. » » »

Anónimo dijo...

Best regards from NY! »

Anónimo dijo...

Enjoyed a lot! Lexus ls430 steering wheel cover training online camouflage pants men who wear a bra phentermine video surveillance