script php para obtener las tablas de la base de datos

  • Autor Autor LabConker
  • Fecha de inicio Fecha de inicio
L

LabConker

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Para los que hagan análisis de tablas en mysql les dejo una buena herramienta para que puedan consultar los CREATE de las tablas que quieran.
DEBEN CREAR ESTAS DOS TABLAS

CREATE TABLE cmp_table_catalog ( id int(10) unsigned NOT NULL AUTO_INCREMENT, table_name varchar(255) NOT NULL COMMENT 'Nombre de la tabla a analizar', is_enabled enum('enabled','disabled') NOT NULL DEFAULT 'enabled' COMMENT 'Estado de la tabla: enabled o disabled', created_at timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha de creación', updated_at timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Última actualización', PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Catálogo de tablas habilitadas para análisis de componentes'

CREATE TABLE cmp_table_definitions_log ( id int(10) unsigned NOT NULL AUTO_INCREMENT, generated_sql longtext NOT NULL COMMENT 'Script SQL generado con las definiciones de tablas', created_at timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha de generación del script', PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Registro de scripts SQL generados a partir de las tablas habilitadas'

EN LA TABLA cmp_table_catalog ponen el nombre de la tabla que quieren buscar ( pongan todas las que quieran).


luego ejecutan este php


<?php
// PON TUS CREDENCIALES AQUÍ
$host = 'localhost';
$dbname = 'database';
$user = 'root';
$pass = '';
try {
// Crear conexión PDO
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// Obtener las tablas habilitadas
$stmt = $pdo->prepare("SELECT table_name FROM cmp_table_catalog WHERE is_enabled = 'enabled'");
$stmt->execute();
$tables = $stmt->fetchAll(PDO::FETCH_COLUMN);
if (empty($tables)) {
throw new Exception("No hay tablas habilitadas en cmp_table_catalog.");
}
// Concatenar el SHOW CREATE TABLE de cada tabla
$fullSql = "";
foreach ($tables as $table) {
$stmt2 = $pdo->query("SHOW CREATE TABLE $table");
$row = $stmt2->fetch(PDO::FETCH_ASSOC);
if (!$row || !isset($row['Create Table'])) {
throw new Exception("No se pudo obtener SHOW CREATE TABLE para la tabla $table");
}
$fullSql .= $row['Create Table'] . ";\n\n";
}
// Guardar el SQL en archivo tablas_sistema.txt
$filename = DIR . DIRECTORY_SEPARATOR . 'tablas_sistema.txt';
if (file_put_contents($filename, $fullSql) === false) {
throw new Exception("Error al guardar el archivo $filename");
}
echo "Archivo '$filename' creado con éxito.\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}


recibirán un archivo tablas_sistema.txt

 
Solo como sugerencia, estos scripts que pueden ser de ayuda, en los foros, si no usas correctamente los marcadores de codigo y demas elementos BBCODE , la verdad no sirve de mucha ayuda, es como si quisieran poner tutoriales a la rapida. solo para completar los STATS. pero en todo caso hay herramientas para presentar scripts, o incluso crearte un minirepo en github, listo para ejecutar y probar. a muchos les daria peresa incluso montarse toda la infraestructura o adaptar antes de probar algo, y es de mucha ayuda, tenerlo en github,
ejecutar el CODESPACE y ver que pasa y como se comporta, sin instalar nada, solo un par de comandos en una maquina virtual

ahora para fragmentos mas pequeños o bien presentado con las etiquetas de codigo del foro o bien usando como Snippets de gitlab


cosas asi.
 
Es solo un programa que hice para enviar las tablas en los prompt, debe haber muchas herramientas como esta, pero es mucho mas fácil programarlo que buscarlo.