Usando MySQL puedo ejecutar la consulta:
SHOW CREATE TABLE MyTable;
Y devolverá la instrucción de creación de tabla para la tabla específica. Esto es útil si ya tiene una tabla creada y desea crear la misma tabla en otra base de datos.
¿Es posible obtener la instrucción de inserción para una fila o conjunto de filas ya existente? Algunas tablas tienen muchas columnas, y sería bueno para mí poder obtener una declaración de inserción para transferir filas a otra base de datos sin tener que escribir la declaración de inserción, o sin exportar los datos a CSV y luego importar los mismos datos en la otra base de datos.
Solo para aclarar, lo que quiero es algo que funcione de la siguiente manera:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
Y me han devuelto lo siguiente:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
aviso. Ninguno hasta ahora.Respuestas:
No parece haber una manera de obtener las
INSERT
declaraciones de la consola MySQL, pero puede obtenerlas usando mysqldump como sugirió Rob. Especifique-t
para omitir la creación de la tabla.fuente
--hex-blob
si tiene columnas de blob (por ejemplo abit(1)
), de lo contrario lo escribiría como una cadena, lo que podría provocar unUnknown command '\0'
error al ejecutar INSERT.En MySQL Workbench puede exportar los resultados de cualquier consulta de tabla única como una lista de
INSERT
declaraciones. Simplemente ejecute la consulta y luego:Export/Import
de los resultadosFormat
seleccionarSQL INSERT statements
Save
Export
fuente
Como copió la tabla con el SQL producido por SHOW CREATE TABLE MyTable , puede hacer lo siguiente para cargar los datos en la nueva tabla.
Si realmente quiere las declaraciones INSERT, entonces la única forma que conozco es usar mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm . Puede darle opciones para simplemente volcar datos para una tabla específica e incluso limitar filas.
fuente
Escribí una función php que hará esto. Necesitaba hacer una declaración de inserción en caso de que un registro deba reemplazarse después de eliminarlo para una tabla de historial:
fuente
O' Malley
, las consultas generadas tendrán errores de sintaxis debido a comillas simples que no coinciden. Al menos deberías usarlomysql_real_escape_string
si vas por esta ruta.El código de Laptop Lift funciona bien, pero pensé que a algunas personas les gustaría.
El manejador de la base de datos es un argumento, no codificado. Usé la nueva API de MySQL. Reemplazó $ id con un argumento opcional $ where para mayor flexibilidad. Se usó real_escape_string en caso de que alguien haya intentado hacer una inyección sql y evitar roturas simples que involucren comillas. Usé la
INSERT table (field...) VALUES (value...)...
sintaxis para que los campos se definan solo una vez y luego solo enumeren los valores de cada fila (implode es increíble). Porque Nigel Johnson lo señaló, agreguéNULL
manejo.Solía
$array[$key]
hacerlo porque me preocupaba que pudiera cambiar de alguna manera, pero a menos que algo esté terriblemente mal, de todos modos no debería.fuente
INTO
deINSERT INTO {$tables}
pero no hay manejo de valores nulos en la tabla.INTO
es completamente opcional . Le agregué el manejo de nulos.Utilizo el programa SQLYOG donde puedo hacer una consulta de selección, señalar los resultados y elegir exportar como sql. Esto me da las declaraciones de inserción.
fuente
Dentro del banco de trabajo MySQL, realice lo siguiente:
Haga clic en Servidor> Exportar datos
En la pestaña de selección de objetos, seleccione el esquema deseado.
Luego, seleccione las tablas deseadas usando el cuadro de lista a la derecha del esquema.
Seleccione una ubicación de archivo para exportar el script.
Haz clic en Finalizar.
Navegue hasta el archivo recién creado y copie las instrucciones de inserción.
fuente
Si desea obtener "insertar declaración" para su tabla, puede probar el siguiente código.
Como resultado, tendrá una declaración de insers:
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALORES (Valor_11, value_12, ..., value_1n);INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALORES (value_21, Valor_22, ..., value_2n);/ ................................................. .... /
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALORES (value_m1, value_m2, ..., value_mn);, donde m - número de registros en su_tabla
fuente
puede usar Sequel pro para hacer esto, hay una opción para 'obtener como declaración de inserción' para los resultados obtenidos
fuente
En PHPMyAdmin puedes:
Puede aplicar eso en muchas filas a la vez si las selecciona y hace clic en copiar desde la parte inferior de la tabla y luego en Vista previa SQl
fuente
Para usuarios de HeidiSQL :
Si usa HeidiSQL, puede seleccionar la (s) fila (s) que desea obtener la declaración de inserción. Luego haga clic con el botón derecho> Exportar filas de cuadrícula> seleccione "Copiar al portapapeles" para "Destino de salida", "Selección" para "Selección de fila" para que no exporte otras filas, "INSERTOS SQL" para "Formato de salida"> Haga clic en Aceptar.
La declaración de inserción estará dentro de su portapapeles.
fuente
Con PDO puedes hacerlo de esta manera.
fuente
Puede crear un SP con el siguiente código: también admite NULLS.
fuente
Creo que la respuesta proporcionada por Laptop Lifts es la mejor ... pero como nadie sugirió el enfoque que uso, pensé que debería intervenir. Utilizo phpMyAdmin para configurar y administrar mis bases de datos la mayor parte del tiempo. En él, simplemente puede poner marcas de verificación junto a las filas que desee, y en la parte inferior, haga clic en "Exportar" y elija SQL. Le dará instrucciones INSERT para los registros que seleccionó. Espero que esto ayude.
fuente
Según sus comentarios, su objetivo es migrar los cambios de la base de datos de un entorno de desarrollo a un entorno de producción.
La mejor manera de hacer esto es mantener los cambios de su base de datos en su código fuente y, en consecuencia, rastrearlos en su sistema de control de fuente, como git o svn.
puedes ponerte en marcha rápidamente con algo como esto: https://github.com/davejkiger/mysql-php-migrations
Como una solución personalizada muy básica en PHP, puede utilizar una función como esta:
entonces puede crear un script de migración que actualizará cualquier entorno a sus especificaciones.
fuente