¿Cuál es el mejor método para copiar los datos de una tabla en una base de datos a una tabla en otra base de datos cuando las bases de datos están bajo diferentes usuarios?
Sé que puedo usar
INSERT INTO database2.table2 SELECT * from database1.table1
Pero aquí el problema es que tanto database1
y database2
están bajo diferentes usuarios de MySQL. Por user1
lo tanto , database1
solo user2
puede acceder y solo puede acceder database2
. ¿Alguna idea?
Respuestas:
Si tiene acceso de shell, puede usar
mysqldump
para volcar el contenidodatabase1.table1
y canalizarlomysql
adatabase2
. El problema aquí es quetable1
todavía estátable1
.Tal vez necesita cambiar el nombre
table1
detable2
la otra consulta. Por otro lado, puede usar sed para cambiar table1 a table2 entre las tuberías a.Si la tabla 2 ya existe, puede agregar los parámetros al primer mysqldump que no permite crear la tabla-crea.
fuente
CREATE TABLE db1.table1 SELECT * FROM db2.table1
donde db1 es el destino y db2 es la fuente
fuente
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Si está utilizando PHPMyAdmin, podría ser realmente simple. Supongamos que tiene las siguientes bases de datos:
DB1 tiene una tabla de usuarios que desea copiar a DB2
En PHPMyAdmin, abra DB1, luego vaya a la tabla de usuarios.
En esta página, haga clic en la pestaña "Operaciones" en la parte superior derecha. En Operaciones, busque la sección Copiar tabla a (database.table):
& ¡estás listo!
fuente
MySql Workbench : muy recomendable
Esto manejará fácilmente los problemas de migración. Puede migrar tablas seleccionadas de bases de datos seleccionadas entre MySql y SqlServer. Deberías intentarlo definitivamente.
fuente
mysql Workbench
migración conSQLYog
la copia de la base de datos. Desde mi rápido vistazo, parece que son muy similares, pero mysql workbench es una característica más nuevaYo uso Navicat para MySQL ...
¡Facilita la manipulación de todas las bases de datos!
Simplemente seleccione ambas bases de datos en Navicat y luego use.
fuente
Sé que esta es una pregunta vieja, solo responde para que cualquiera que aterrice aquí tenga un mejor enfoque.
A partir de 5.6.10 puedes hacer
Consulte la documentación aquí: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
fuente
Si sus tablas están en el mismo servidor mysql, puede ejecutar lo siguiente
fuente
Utilice la funcionalidad de Exportar e Importar de MySql Workbench. Pasos:
1. Seleccione los valores que desee.
crear una nueva tabla usando columnas similares a la primera
seleccionar todo de la nueva tabla
Haga clic en Importar y seleccione el archivo CSV que exportó en el paso 2
fuente
Aquí hay otra manera fácil:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
fuente
Probar
mysqldbcopy
( documentación )O puede crear una " tabla federada " en su host de destino. Las tablas federadas le permiten ver una tabla de un servidor de base de datos diferente como si fuera local. ( documentación )
Después de crear la tabla federada, puede copiar datos con la habitual
insert into TARGET select * from SOURCE
fuente
Con MySQL Workbench puede usar Exportación de datos para volcar solo la tabla en un archivo SQL local (Solo datos, Solo estructura o Estructura y datos) y luego Importar datos para cargarlo en el otro DB.
Puede tener múltiples conexiones (diferentes hosts, bases de datos, usuarios) abiertas al mismo tiempo.
fuente
Una forma sencilla de obtener todas las consultas que necesita es utilizar los datos de information_schema y concat.
Luego obtendrá una lista de resultados que se ve así:
Luego puede ejecutar esas consultas.
Sin embargo, no funcionará con Vistas MySQL. Puede evitarlos agregando
AND TABLE_TYPE = 'BASE TABLE'
desde la consulta inicial:fuente
¿Es algo que debes hacer regularmente o solo una vez?
Puede hacer una exportación (por ejemplo, usando phpMyAdmin o similar) que creará una secuencia de comandos de su tabla y su contenido en un archivo de texto, luego podría volver a importarla en la otra Base de datos.
fuente
utilice los pasos a continuación para copiar e insertar algunas columnas de una tabla de base de datos a otra tabla de base de datos:
2. INSERTAR EN db2.tablename SELECCIONAR columnname1, columnname2 FROM db1.tablename;
fuente
Primero crea el volcado. Se agregaron las
--no-create-info --no-create-db
banderas sitable2
ya existe:Luego ingrese la
user1
contraseña. Luego:Luego ingrese la
user2
contraseña.Igual que la respuesta @helmors, pero el enfoque es más seguro ya que las contraseñas no están expuestas en texto sin formato a la consola (búsqueda inversa, sniffers de contraseña, etc.). Otro enfoque está bien si se ejecuta desde un archivo de script con las restricciones apropiadas impuestas a sus permisos.
fuente
IN xampp solo exporta la tabla requerida como un archivo .sql y luego impórtala a la tabla requerida
fuente
crear la tabla destination_customer como sakila.customer (Database_name.tablename), esto solo copiará la estructura de la tabla de origen, para que los datos también se copien con la estructura, haga esto crear la tabla destination_customer como select * from sakila.customer
fuente
CREATE TABLE LIKE
en la pregunta, entonces, ¿por qué mencionar que está mal? Y no hay explicación de cómo esta respuesta resuelve el problema de que ninguno de los usuarios tiene acceso a las tablas del otro.