por - mostrar campos de una tabla mysql
¿Cómo encontrar todas las tablas en MySQL con nombres de columna específicos en ellas? (9)
En la versión que no tiene el esquema de information_schema
(versiones anteriores o algunas ndb), puede volcar la estructura de la tabla y buscar la columna manualmente.
mysqldump -h$host -u$user -p$pass --compact --no-data --all-databases > some_file.sql
Ahora busque el nombre de la columna en some_file.sql
usando su editor de texto preferido, o use algunos scripts awk ingeniosos.
Y un simple script sed para encontrar la columna, simplemente reemplaza COLUMN_NAME por el tuyo:
sed -n ''/^USE/{h};/^CREATE/{H;x;s//nCREATE.*/n//n/;x};/COLUMN_NAME/{x;p};'' <some_file.sql
USE `DATABASE_NAME`;
CREATE TABLE `TABLE_NAME` (
`COLUMN_NAME` varchar(10) NOT NULL,
Puedes canalizar el basurero directamente en sed pero eso es trivial.
Tengo dos o tres nombres de columna diferentes que quiero consultar en toda la base de datos y enumerar todas las tablas que tienen esas columnas. ¿Algún script fácil?
Más simplemente hecho en una línea de SQL:
SELECT * FROM information_schema.columns WHERE column_name = ''column_name'';
Para aquellos que buscan la inversa de esto, es decir, buscar tablas que no contengan un determinado nombre de columna, aquí está la consulta ...
SELECT DISTINCT TABLE_NAME FROM information_schema.columns WHERE
TABLE_SCHEMA = ''your_db_name'' AND TABLE_NAME NOT IN (SELECT DISTINCT
TABLE_NAME FROM information_schema.columns WHERE column_name =
''column_name'' AND TABLE_SCHEMA = ''your_db_name'');
Esto fue realmente útil cuando comenzamos a implementar lentamente el uso de la columna especial ai_col
de InnoDB y ai_col
que averiguar cuál de nuestras 200 tablas aún no se había actualizado.
Si desea " Para obtener solo todas las tablas ", utilice esta consulta:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like ''%''
and TABLE_SCHEMA = ''tresbu_lk''
Si desea " Para obtener todas las tablas con columnas ", utilice esta consulta:
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE ''%''
AND TABLE_SCHEMA=''tresbu_lk''
Use esta consulta de una línea, reemplace el_nombre_column_deseado por el nombre de su columna.
SELECT TABLE_NAME FROM information_schema.columns WHERE column_name = ''desired_column_name'';
Para obtener todas las tablas con columnas columnA
o ColumnB
en la base de datos YourDatabase
:
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN (''columnA'',''ColumnB'')
AND TABLE_SCHEMA=''YourDatabase'';
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ''%city_id%'' AND TABLE_SCHEMA=''database''
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE ''employee%''
AND TABLE_SCHEMA=''YourDatabase''
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE ''%wild%'';