Mi proveedor instalado en mi sitio Drupal CMS. Ahora necesito copiar todos mis datos del sitio anterior. Tengo tablas sin prefijos en mi DB anterior, pero en el nuevo DB todas las tablas tienen el prefijo dp_[table_name]
.¿Cómo puedo cambiar los prefijos en todas las tablas de mi base de datos MySQL?
Respuesta
solución zerkms no funcionó para mí. Tuve que especificar la base de datos information_schema
para poder consultar la tabla Tables
.
SELECT
CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='test';
Editar:
optimizado para la consulta única llamada RENAME TABLE vez. Algo en lo que entré fue el hecho de que la salida concatenada se truncó a 341 caracteres. Esto se puede resolver (si lo permite el servidor) estableciendo la variable de MySQL group_concat_max_len
a un valor más alto:
SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.
escriba una secuencia de comandos que ejecutará RENAME TABLE para cada tabla.
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM
`TABLES` WHERE `TABLE_SCHEMA` = "test";
donde "prueba" se espera nombre de la base
después de esto se puede consultar siempre que agregará prefijos si se ejecuta ello ;-)
simplemente se puede volcar la base de datos, abrir el vertedero con un editor de texto, reemplace todas las apariciones de "CREATE TABLE" con "CREATE TABLE dp_" y restaure la base de datos. Tarda un par de minutos en hacerlo.
hasta que la base de datos tenga menos de un par de gigabytes ;-) – zerkms
Estoy en el juego. :) Para bases de datos mayores que un GB, use una herramienta de consulta (SQL Workbench, por ejemplo), seleccione todas las tablas en la lista de tablas, copie los contenidos en la columna A de una hoja de cálculo (en mi caso, Calc) y ponga lo siguiente fórmula en la columna B: = "cambiar el nombre de la tabla" & A1 & "a dp_" & A1 & "; "Pegar la fórmula de la celda B1 en cada otra celda de la columna B y el script de cambio de nombre aparece en la columna B! –
como dije en mi respuesta - una forma apropiada de cambiar el nombre es usar RENAME TABLE (+ information_shema para recuperar nombres de tablas) – zerkms
PhpMyAdmin le permite hacer esto ahora. En el nivel de "Base de datos", seleccione la pestaña Estructura para ver todas las tablas. Haga clic en 'marcar todo' (debajo de la lista de la tabla). En el menú desplegable 'Con seleccionado', seleccione: 'Reemplazar el prefijo de la tabla'.
- 1. ¿Cómo puedo colocar todas las tablas en mi base de datos?
- 2. ¿Cómo cambiar todas las tablas de mi base de datos al juego de caracteres UTF8?
- 3. Lista de todas las tablas en la base de datos
- 4. Listar todas las tablas en una base de datos
- 5. MySQL OPTIMIZE todas las tablas?
- 6. Renombrar todas las tablas en la base de datos
- 7. Eliminar datos de todas las tablas en MYSQL
- 8. Cómo generar DDL para todas las tablas en una base de datos en MySQL
- 9. Cómo agregar el prefijo de todas las tablas en mysql
- 10. ¿Cómo eliminar todas las tablas en una base de datos MySQL?
- 11. ¿Cómo puedo convertir todas las columnas en mi base de datos a mayúsculas y minúsculas
- 12. ¿Cómo colocar todas las tablas en la base de datos sin soltar la base de datos?
- 13. ¿Cómo puedo listar todas las tablas en una base de datos con Squirrel SQL?
- 14. Obtener todas las columnas de todas las tablas MySQL
- 15. Obtenga recuentos de todas las tablas en la base de datos MySQL
- 16. En MySQL, ¿cómo cambio el nombre de las tablas dentro de una base de datos?
- 17. actualización de todas las tablas de una base de datos MySQL
- 18. volcar todas las tablas de mysql en archivos separados automágicamente?
- 19. ¿Cómo puedo crear una nueva base de datos SQLite, con todas las tablas, sobre la marcha?
- 20. Obtenga todas las tablas y todas las columnas de una base de datos odbc
- 21. SQL: elimine todos los datos de todas las tablas disponibles
- 22. Cómo vaciar todas las filas de todas las tablas en mysql (en sql)
- 23. Cómo mostrar todas las tablas de múltiples bases de datos
- 24. Django: elimine todos los datos de todas las tablas (pero conserve las tablas)
- 25. ¿Cómo puedo eliminar el contenido de todas las tablas de mi base de datos en phpMyAdmin sin soltar la base de datos?
- 26. Seleccionar de todas las tablas
- 27. Cómo colocar todas las tablas de la base de datos con manage.py CLI en Django?
- 28. Buscar todas las tablas usando MySQL Workbench
- 29. ¿Cómo borrar todas las vistas de la base de datos mysql usando mysql query/command?
- 30. ¿Pregunta para determinar el tamaño de las tablas en una base de datos? (MySQL)
Cierto, esto funcionó para mí ya que estaba trabajando en localhost XAMPP usando Joomla y quería cambiar al prefijo de Joomla automático. Sigo tus pasos: tuve que especificar el 'information_schema''Tables' como lo hiciste y establecer SET group_concat_max_len = 10240; en mi caso, ya que había muchas tablas. +1 – MJoraid
Un punto más, puede usar el mismo comando para mover tablas a bases de datos (digamos backup_db) como: 'SELECT CONCAT ('RENAME TABLE', TABLE_NAME, 'TO backup_db.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA. TABLAS DONDE table_schema = 'testbot'; ' – sactiw
buen punto la edición sobre la variable' group_concat_max_len'! No recibí la oración completa, ¡funcionó muy bien! – AlexGH