Tenemos una gran base de datos Oracle con muchas tablas. ¿Hay alguna forma de que pueda consultar o buscar para encontrar si hay tablas con ciertos nombres de columna?
Es decir, muéstrame todas las tablas que tienen las columnas: id, fname, lname, address
Detalle que olvidé agregar: necesito poder buscar en diferentes esquemas. El que debo usar para conectar no posee las tablas en las que necesito buscar.
column_name
+like
si no está seguro del nombre exacto:select owner, table_name, column_name from all_tab_columns where column_name like 'someField%';
Los datos que desea están en la tabla de metadatos "cols":
Este le dará una lista de tablas que tienen todas las columnas que desea:
Para hacer esto en un esquema diferente, simplemente especifique el esquema delante de la tabla, como en
Si desea combinar las búsquedas de muchos esquemas en un resultado de salida, puede hacer esto:
fuente
SELECT * FROM COLS
no devuelve nada de mi esquema. Solo tengo privilegios selectos en las mesas. ¿Seleccionar no sería suficiente para permitirme verlo a través de COLS?select * from schema1.cols
me da untable or view does not exist
error. ¿Tendría eso que ver con cómo se configuran los privilegios?PARA buscar el nombre de una columna, utilice la siguiente consulta si conoce el nombre de la columna con precisión:
PARA buscar el nombre de una columna si no conoce la columna exacta, utilice a continuación:
fuente
Aquí hay uno que hemos guardado en findcol.sql para que podamos ejecutarlo fácilmente desde SQLPlus
fuente