Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: General Dmitry Vergadoski en 3 Febrero 2015, 12:31 pm



Título: como puedo buscar dentro de una de base datos
Publicado por: General Dmitry Vergadoski en 3 Febrero 2015, 12:31 pm
hola amigos quiero buscar un texto por ejemplo "hola" el cual se encuentra en una base de datos llamada "base1" pero no se en cual tabla esta y hay muchas, la idea es que el busque en todas las tablas donde aparezca el texto "hola" y me muestre donde se encuentra el texto.

gracias de antemano.


Título: Re: como puedo buscar dentro de una de base datos
Publicado por: Shell Root en 3 Febrero 2015, 13:36 pm
En MSSQL me ayudo mucho esto:
Código
  1. CREATE PROC SearchAllTables
  2. (
  3. @SearchStr nvarchar(100)
  4. )
  5. AS
  6. BEGIN
  7.  
  8. -- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
  9. -- Purpose: To search all columns of all tables for a given search string
  10. -- Written by: Narayana Vyas Kondreddi
  11. -- Site: http://vyaskn.tripod.com
  12. -- Tested on: SQL Server 7.0 and SQL Server 2000
  13. -- Date modified: 28th July 2002 22:50 GMT
  14.  
  15.  
  16. CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
  17.  
  18. SET NOCOUNT ON
  19.  
  20. DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
  21. SET  @TableName = ''
  22. SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
  23.  
  24. WHILE @TableName IS NOT NULL
  25. BEGIN
  26. SET @ColumnName = ''
  27. SET @TableName =
  28. (
  29. SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
  30. FROM INFORMATION_SCHEMA.TABLES
  31. WHERE TABLE_TYPE = 'BASE TABLE'
  32. AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
  33. AND OBJECTPROPERTY(
  34. OBJECT_ID(
  35. QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
  36. ), 'IsMSShipped'
  37.       ) = 0
  38. )
  39.  
  40. WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
  41. BEGIN
  42. SET @ColumnName =
  43. (
  44. SELECT MIN(QUOTENAME(COLUMN_NAME))
  45. FROM INFORMATION_SCHEMA.COLUMNS
  46. WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
  47. AND TABLE_NAME = PARSENAME(@TableName, 1)
  48. AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
  49. AND QUOTENAME(COLUMN_NAME) > @ColumnName
  50. )
  51.  
  52. IF @ColumnName IS NOT NULL
  53. BEGIN
  54. INSERT INTO #Results
  55. EXEC
  56. (
  57. 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
  58. FROM ' + @TableName + ' (NOLOCK) ' +
  59. ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
  60. )
  61. END
  62. END
  63. END
  64.  
  65. SELECT ColumnName, ColumnValue FROM #Results
  66. END

:http://geeks.ms/blogs/jalarcon/archive/2006/09/28/C_F300_mo-buscar-un-dato-en-toda-la-base-de-datos-SQL-Server.aspx


Título: Re: como puedo buscar dentro de una de base datos
Publicado por: General Dmitry Vergadoski en 3 Febrero 2015, 14:11 pm
En MSSQL me ayudo mucho esto:
Código
  1. CREATE PROC SearchAllTables
  2. (
  3. @SearchStr nvarchar(100)
  4. )
  5. AS
  6. BEGIN
  7.  
  8. -- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
  9. -- Purpose: To search all columns of all tables for a given search string
  10. -- Written by: Narayana Vyas Kondreddi
  11. -- Site: http://vyaskn.tripod.com
  12. -- Tested on: SQL Server 7.0 and SQL Server 2000
  13. -- Date modified: 28th July 2002 22:50 GMT
  14.  
  15.  
  16. CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
  17.  
  18. SET NOCOUNT ON
  19.  
  20. DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
  21. SET  @TableName = ''
  22. SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
  23.  
  24. WHILE @TableName IS NOT NULL
  25. BEGIN
  26. SET @ColumnName = ''
  27. SET @TableName =
  28. (
  29. SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
  30. FROM INFORMATION_SCHEMA.TABLES
  31. WHERE TABLE_TYPE = 'BASE TABLE'
  32. AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
  33. AND OBJECTPROPERTY(
  34. OBJECT_ID(
  35. QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
  36. ), 'IsMSShipped'
  37.       ) = 0
  38. )
  39.  
  40. WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
  41. BEGIN
  42. SET @ColumnName =
  43. (
  44. SELECT MIN(QUOTENAME(COLUMN_NAME))
  45. FROM INFORMATION_SCHEMA.COLUMNS
  46. WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
  47. AND TABLE_NAME = PARSENAME(@TableName, 1)
  48. AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
  49. AND QUOTENAME(COLUMN_NAME) > @ColumnName
  50. )
  51.  
  52. IF @ColumnName IS NOT NULL
  53. BEGIN
  54. INSERT INTO #Results
  55. EXEC
  56. (
  57. 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
  58. FROM ' + @TableName + ' (NOLOCK) ' +
  59. ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
  60. )
  61. END
  62. END
  63. END
  64.  
  65. SELECT ColumnName, ColumnValue FROM #Results
  66. END

:http://geeks.ms/blogs/jalarcon/archive/2006/09/28/C_F300_mo-buscar-un-dato-en-toda-la-base-de-datos-SQL-Server.aspx

donde coloco el texto a buscar y el nombre de la base de datos? servira para postgresql?