2009-03-13 16 views
6

Aquí está mi problema: Estoy buscando la aplicación de base de datos basada en Postgresql por primera vez y tratando de encontrar lo que está causando ciertas advertencias/errores en el archivo de registro del sistema. No sé nada sobre el esquema de la base de datos. No sé nada sobre el código fuente. Pero necesito localizar el problema.Buscando una cadena 'en algún lugar' en una base de datos

Puedo buscar fácilmente los contenidos de cadenas de archivos basados ​​en archivos de texto como php y perl, usando el comando de UNIX 'grep'; incluso para los binarios compilados que puedo usar, use los comandos de UNIX 'buscar' y 'cadenas'.

Mi problema es que parte del texto producido en el archivo de registro proviene de la base de datos. Comprobar el archivo de registro de errores para la base de datos no produce nada útil ya que no hay problemas con las consultas utilizadas por la aplicación.

Lo que me gustaría hacer es buscar exhaustivamente todas las columnas y todas las tablas de la base de datos para una cadena. ¿Es esto posible y cómo?

Gracias de antemano por cualquier apuntador. El entorno utilizado es Postgresql 8.2, pero también sería útil saber cómo hacerlo en otros sabores de bases de datos relacionales.

Respuesta

11

Puede que no sea óptimo, pero como ya sé cómo grep un archivo de texto, simplemente convertiría la base de datos a un archivo de texto y grep eso. Convertir la base de datos a un archivo de texto en este caso significaría eliminar los datos usando pg_dump.

La forma más rápida/fácil/más eficiente no siempre es elegante ...

+0

Rápido y sucio: me gusta. Esta solución funciona bien para aquellos de nosotros que estamos más familiarizados con la expresión regular que las consultas y funciones de SQL. ¡Gracias! –

1

No estoy familiarizado con Postgresql, pero creo que, como SQL Server, tiene tablas/vistas de metadatos que describen el esquema de la base de datos (para SQL Server 2005+, te recomendaría sys.tables y sys.columns). La idea sería generar una serie de consultas ad-hoc basadas en el esquema de la tabla, cada una encontrando coincidencias en una combinación particular de tabla/campo e insertando coincidencias en una tabla "log".

1

He usado variantes de this en el pasado.

Cuestiones relacionadas